
Excel マクロ VBA 別シートのセルを検索し、該当するセルの右にあるセルを入力させる方法
sheet『品名マスタ』にはA列に№、B列に商品名があります。sheet『一覧』のB列7行目以降に№が入っています。
※この№が重複することはありません。
『一覧』B列7行目以降にある№で『品名マスタ』A列の№を検索し、該当する『品名マスタ』B列の商品名を『一覧』のC列7行目に反映する。
『一覧』B列の№が空欄の場合は何も入れない。
という処理のボタンをつけたいのですが、どなたか詳しい方ご教授いただけないでしょうか?
(OS:Windows7 Excel:2010を使用しております。)
No.1ベストアンサー
- 回答日時:
こんにちは。
以下を試してみてください。
>処理のボタンをつけたい
マクロ名は任意です。Match関数を利用しています。
'//
Sub Button1_Click() '←ここは任意
Dim c, i
Dim Sh1 As Worksheet: Set Sh1 = Worksheets("一覧")
Dim Sh2 As Worksheet: Set Sh2 = Worksheets("品名マスタ")
With Sh1
For Each c In .Range("B7", .Cells(Rows.Count, 2).End(xlUp))
If IsNumeric(c.Value) Then
i = Application.Match(c.Value, Sh2.Columns(1), 0)
If IsNumeric(i) Then
c.Offset(, 1).Value = Sh2.Cells(i, 2).Value
End If
End If
Next c
End With
End Sub
-----------
この種の質問では定番ですが、イベント・ドリブン型マクロがありますので、それも加えておきます。一覧のB列に数字を入れると、自動的に商品名が出てきます。Vlook関数とは似ていますが、違うのは、数字を消すと、右隣のセルの内容も消えます。
'//シートモジュール(シートタブを右クリック、コードの表示)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant '数値型ではありません
Dim buf As String
Dim Sh1 As Worksheet: Set Sh1 = Worksheets("品名マスタ")
If Target.Count > 1 Then Exit Sub
With Target
If .Column <> 2 Then Exit Sub
If .Row < 7 Then Exit Sub
'数字を削除すると、隣の文字が消える
If .Value = "" Then Target.Offset(, 1).ClearContents: Exit Sub
If IsNumeric(.Value) Then
i = Application.Match(.Value, Sh1.Columns(1), 0)
If IsNumeric(i) Then
buf = Sh1.Cells(i, 2).Value
Application.EnableEvents = False
.Offset(, 1).Value = buf
Application.EnableEvents = True
buf = ""
End If
End If
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
複数の列の値を結合して別の列...
-
rowsとcolsの意味
-
IIF関数の使い方
-
VBAを使用し、数式を無視した最...
-
VBAリストボックスへの複数列の...
-
エクセル VBA ユーザーフォー...
-
VBAのFind関数で結合セルを検索...
-
VBマクロ 色の付いたセルを...
-
【Excel VBA】カンマと改行コー...
-
エクセル 2つの表の並べ替え
-
VBAに関するメッセージ
-
Excel VBA_2000ハイパーリンク...
-
VBA: 2列のリストボックスの2列...
-
Worksheets メソッドは失敗しま...
-
複数csvを横に追加していくマク...
-
targetをA列のセルに限定するに...
-
C# 列の挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA sum ワークシートChange
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
【VBA】2つのシートの値を比較...
-
rowsとcolsの意味
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
B列の最終行までA列をオート...
-
VBAでのリスト不一致抽出について
-
複数の列の値を結合して別の列...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
エクセル 2つの表の並べ替え
-
DataGridViewに空白がある場合...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】複数行あるカンマ区切り...
-
ExcelVBAでテキストルーレット...
おすすめ情報