忙しい現代人の腰&肩のお悩み対策!

mid関数、find関数について教えてください。

1つのセルに同一の値が入っていて、2個目の値から、何文字もしくは2個目の値を探したい場合どのようにしたら良いのでしょうか。

例)1つのセルに、1-A0001-A0002 と値が入っていて、"A0002"だけを別のセルに表記させたい場合、開始位置を9文字目と指定し、解を求めることができますが、2つ目の"A"から5桁というような指定の方法ができるのでしょうか。

RIGHT関数という方法もありますが、セルによっては、1-A0001-A0002○○○というように別の文字が続いているため、上記のような設定で解を求めたいと考えます。

アドバイスを宜しくお願いいたします。

A 回答 (4件)

#2です。


確実に2番目の"A"の場所を検索するには、
=FIND("A",A1,FIND("A",A1)+1)
ですので、
=MID(A1,FIND("A",A1,FIND("A",A1)+1),5)
とすればOKです。
    • good
    • 0

こんばんは。



質問がちょっと正確性がないようです。

>1-A0001-A0002....
>2つ目の"A"から5桁というような指定の方法ができるのでしょうか。

位置の任意性は、二つのAだけなのでしょうか?
5桁は決まっているのでしょうか?

A1に文字列があるとしたら、

=MID(A1,FIND("^",SUBSTITUTE(A1,"A","^",2)),5)

となります。[SUBSTITUTE の最後の2は、2番目のAを探す方法です]
    • good
    • 0

検索文字の開始位置を指定すればいいのではないでしょうか。


例えばセルA1に入っていたとすれば、=FIND("A",A1,6)のように
6文字目以降を検索すればいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうござました。
考え方・捉え方を変えれば、答えが見えてくるのですね。

お礼日時:2008/11/22 17:35

=MID(A1,3,5)

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QexcelのVLOOKUPで検索値を2つにできますか?

excelのVLOOKUPで検索値を2つにしたいです
私の知っているVLOOKだと下記のことは対応できます
例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合
「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます

そこで質問です
「会社名と住所が検索値と同一なら電話番号を表示しなさい」
というような、複数の検索値を持つ事はできないのでしょうか?

参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

Aベストアンサー

元の表をA列に会社名、B列に住所、C列に「=A2&B2」、D列に電話番号のようにして
=VLOOKUP(会社名&住所,$D$2:$C$100,2,FALSE)
のようにすれば可能です。

Q複数の同じフォーマットのファイルを新しいブックで一つのシートにまとめる方法

仕事で、各部署から送られてきた、同じフォーマットのファイル(シート1にのみデータ有)が50個近くあります。
それを新しいブックで一つのシートにまとめなくてはいけません。
地道にコピペするのは時間がかかるのでマクロで処理を行いたいと思います。
マクロでの処理方法ご存知の方、処理方法の載っているサイトをご存知の方、もしくはマクロより簡単な方法がありましたら教えてください。

あと、逆に一つのシートをいくつかのファイルに振り分けていく方法もご存知でしたら教えて下さい。
よろしくお願いします。

Aベストアンサー

すみません。質問を勘違いしていました。
>新しいブックで一つのシートにまとめなくてはいけません
でしたね。
Sub Sample1()
Dim buf As String, i As Long
Dim j
buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf
Sheets("Sheet1").Range("A1:J1000").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks(buf).Activate
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
で試してみてください。使い方などは
http://oshiete1.goo.ne.jp/qa4225063.html
を参照してみてください。同じ質問があったので気がつきました。

すみません。質問を勘違いしていました。
>新しいブックで一つのシートにまとめなくてはいけません
でしたね。
Sub Sample1()
Dim buf As String, i As Long
Dim j
buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf
Sheets("Sheet1").Range("A1:J1000").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks(buf).Activate
Application.CutCop...続きを読む

Q2つのシート間での重複データのチェック

Excelについて教えてください。
以下の2つのシートがあります。

Sheet1
すずき 03-0000-0000
やまだ 03-1111-1111
たなか 03-2222-2222

Sheet2
03-1111-1111
03-4444-4444
03-0000-0000
03-2222-2222

Sheet1には名称と電話番号、Sheet2には別所から抽出した電話番号のみのデータがあります。
Sheet1のデータの中からSheet2に電話番号があるものだけを知りたいのですが、たとえばSheet1の 各行のC列 に Sheet2に一致する番号があった場合は●等付けるにはどうすればよいでしょうか。

よろしくお願いします

Aベストアンサー

シート1のC列に式を入れます。
=IF(ISNA(VLOOKUP(B1,Sheet2!A:A,1,FALSE))=TRUE,"-","●")

【式の説明】
シート1のセルB1の値が、シート2のA列に、存在する場合は●を、存在しない場合は-をセット。

Qセル内文章の特定の文字で囲まれた部分のみを抜き出す方法

Excelのセル内に文章が入っております。
その中から、特定の文字列で囲まれた部分のみを
別のセルに抜き出す関数はございますか?

例えば、「こんにちは、○~~~~~○それではまた。」の
○と○で囲まれた部分を抜き出す方法です。

お手数ですが、どなたかご存知の方がいらっしゃいましたら
教えていただきますよう、よろしくお願いいたします。

Aベストアンサー

=MID(A1,SEARCH("○",A1,1)+1,SEARCH("○",A1,SEARCH("○",A1,1)+1)-(SEARCH("○",A1,1)+1))

文字列がA1にあるとしてこれでどうですか?

Qエクセルのfind関数で、複数の条件

エクセルで、住所に"北海道"が含まれていると、"北海道"と表示し、
"青森県"や"岩手県"などが含まれていると、"東北"と表示したいです。

以下の関数を作ったのですが、北海道のときは想定どおり"北海道"と表示されますが、
それ以外のときは#VALUE!になってしまいます。
どこが悪いでしょうか?

=if(find("北海道",A1)>0,"北海道",if(find("青森県",A1)>0,"東北",if(find("岩手県",A1)>0,"東北",if(find("宮城県",A1)>0,"東北",if(find("秋田県",A1)>0,"東北",if(find("山形県",A1)>0,"東北",if(find("福島県",A1)>0,"東北","該当なし")))))))

Aベストアンサー

添付図参照

B2: =IF(ISERROR(VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE)),VLOOKUP(LEFT(A2,4),D$1:E$48,2,FALSE),VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE))

Q特定の文字列を含む場合指定の値を返す エクセル関数

Vlookupだとセルの値全てで照合しますが、特定の文字列を含む場合でVlook的に利用するにはどうすればよいでしょうか。  find やIFだとキリがないかな・・と思い格闘中です。 
アドバイスいただけると幸いです。よろしくお願いします。

Aベストアンサー

こんにちは!
VBAになってしまいますが、一例です。

↓の画像のようにSheet1にSheet2の表に基づいて表示するとします。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)


Sub Sample1() 'この行から
Dim i As Long, k As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

Application.ScreenUpdating = False
Range(wS1.Cells(2, 2), wS1.Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
For k = 2 To wS2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To wS1.Cells(Rows.Count, 1).End(xlUp).Row
If InStr(wS1.Cells(i, 1), wS2.Cells(k, 1)) > 0 Then
wS1.Cells(i, 2) = wS2.Cells(k, 2)
End If
Next i
Next k
Application.ScreenUpdating = True
End Sub 'この行まで

※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。

お望みの方法でなかったらごめんなさいね。m(_ _)m

こんにちは!
VBAになってしまいますが、一例です。

↓の画像のようにSheet1にSheet2の表に基づいて表示するとします。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)


Sub Sample1() 'この行から
Dim i As Long, k As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

Applic...続きを読む


人気Q&Aランキング