人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAスクリプトに関する質問です。セルに縦に 1 オレンジ (A1:B1) 2 アップル(A2:B2) 3 ピーチ(A3:B3).... のようにデータが、ID,名称ではいっています。ある文字列が来たときに、この縦の範囲の中の名称に該当するがあったら、IDを返すのはどうかくのが楽なのでしょうか? ワークシート関数を使うと簡単にいけるような気もします。

●質問者: kaiketsu
●カテゴリ:コンピュータ
✍キーワード:A1 A3 b2 VBA アップル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GreenStar
●35ポイント

オレンジ 1 の並びならVLOOKUPワークシート関数! だけど逆だからMatchワークシート関数!!

いずれの場合も見つからなかった場合はエラーとなるのでON ERROR処理となる!!

Sub Macro1()
 Dim searchRange As Range, searchName As String, matchRow As Long
 On Error GoTo Err
 searchName = "アップル"
 With Worksheets("Sheet1")
 Set searchRange = Worksheets("Sheet1").Range("B1:B3")
 matchRow = Application.WorksheetFunction.Match(searchName, searchRange)
 MsgBox "IDは" & .Range("A" & matchRow).Value & "です。"
 End With
Exit Sub
Err:
 MsgBox "該当なし"
End Sub

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_ws_kansu.html


だけど! ON ERRORに頼るとろくな事がない!! VBAならFINDのほうがスマート!!

Sub Macro2()
 Dim searchName As String, searchRange As Range, matchCell As Object, matchRow As Long
 searchName = "アップル"
 With Worksheets("Sheet1")
 Set searchRange = .Range("B1:B3")
 Set matchCell = searchRange.Find(searchName)
 If matchCell Is Nothing Then
 MsgBox "該当なし"
 Else
 matchRow = matchCell.Row
 MsgBox "IDは" & .Range("A" & matchRow).Value & "です。"
 End If
 End With
End Sub

http://excelvba.pc-users.net/fol7/7_1.html

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html


2 ● SALINGER
●35ポイント ベストアンサー

ワークシート関数のVLOOKUPのようですが、VLOOKUPだとキーになる列より左を取り出せないです。

(IDから名称ならば簡単にできます。)

それでVBAでやるならば、普通Findを使って次のような感じです。

Sub test()
 Dim res
 Dim str As String
 str = "アップル "
 
 Set res = Range("B:B").Find(what:=str, lookat:=xlWhole, MatchCase:=True, MatchByte:=True)
 If Not res Is Nothing Then
 Debug.Print res.Offset(0, -1).Value
 Else
 Debug.Print str & "は見つかりません"
 End If
End Sub

FINDを使うときは、LookAtの引数を指定しないと規定値が部分一致なのでxlWhole(全て一致)を必ず指定してください。

また、検索して見つからなかった場合の処理も必要です。

詳しくはこちら。

http://excelvba.pc-users.net/fol7/7_1.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ