前提・実現したいこと
● 前提
Excelで、似ている文字列群の中から
任意の単語を検索し
その位置(座標)が知りたい
- 文字列群(Excelのシート1 / マス目B1:B3)
AAAB
AAA
AAAC
- 検索したい文字(Excelのシート2 / マス目E27)
AAA
ExcelのMATCH関数やVBAのFIND関数で
"完全一致"を使って検索しました。
ですが、文字列群の上の行から順に検索されるため
「AAA」ではなく「AAAB」の位置が返ってきてしまいます。
● 実現したいこと
Excelで、文頭から途中まで同じ文字列群の中から
任意の単語1つ(文頭から文末まで完全一致する)を検索し
その位置(座標)が知りたい
試したこと
ExcelのMATCH関数やVBAのFIND関数を試した。
※ 正規表現でできるならその方法を教えて欲しいです。
"完全一致"を使って検索できるが
文字列群の上の行から順に検索されるため
「AAA」ではなく「AAAB」の位置が返ってきてしまう
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
関数使わずに、単純比較。 速度は遅い??
VBA
1Dim sh1 As Worksheet 2Dim sh2 As Worksheet 3Set sh1 = Worksheets("Sheet1") 4Set sh2 = Worksheets("Sheet2") 5 6Dim S As String 7S = sh2.Range("E27").Text 8 9Dim target As Range 10For Each target In sh1.Range("B1:B3") 11 If S = target.Text Then 12 Debug.Print target.Row 13 Exit Sub 14 End If 15Next
投稿2020/03/30 09:47
総合スコア392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
VBAでも普通に2が返りますね。
vba
1 'MATCH関数 2 MsgBox WorksheetFunction.Match("AAA", Range("B1:B3"), 0) 3 4 'Findメソッド 5 MsgBox Range("B1:B3").Find("AAA", LookAt:=xlWhole).Row
投稿2020/03/30 08:45
編集2020/03/30 08:49総合スコア34075
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
「AAA」ではなく「AAAB」の位置が返ってきてしまう
普通に「=MATCH(E1,B1:B3,0)」で2が返ってきませんか?
ワイルドカード文字が検索文字に含まれる場合=MATCH(SUBSTITUTE(SUBSTITUTE(E1,"?","~?"),"*","~*"),B1:B3,0)
VBAならRange.Find
で2,2
が返りませんか?
※ワイルドカード文字が検索文字列に含まれる場合は邪魔くさいので ワークシート関数のFindを使った方がいいです。
VBA
1Sub Macro1() 2 Dim target As Range 3 Set target = Range("B1:B3").Find(What:=Range("E1").Text, _ 4 LookAt:=xlWhole, MatchCase:=True) 5 Debug.Print target.Row & "," & target.Column 6End Sub
投稿2020/03/30 08:33
編集2020/04/02 09:01総合スコア7918
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/30 08:51
2020/03/30 08:56
2020/03/30 08:58
2020/03/30 09:02
2020/03/30 09:17 編集
2020/04/01 06:13
2020/04/01 06:27 編集
2020/04/01 06:34
2020/04/01 07:28 編集
2020/04/01 07:32
2020/04/02 08:52
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。