
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで、特定の文字より後を削除...
-
空白セルをとばして転記
-
VBAで重複データを確認したい
-
IIF関数の使い方
-
VBAで別のブックの値をVlookup...
-
オートフィルタをマクロで作成...
-
DataGridViewに空白がある場合...
-
【VBA】2つのシートの値を比較...
-
VBAを使って検索したセルをコピ...
-
VBA カスタムオーダーのあと...
-
VBA: 2列のリストボックスの2列...
-
vba 2つの条件が一致したら...
-
複数の列の値を結合して別の列...
-
VBAで、離れた複数の列に対して...
-
VBAのFind関数で結合セルを検索...
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
C# dataGridViewの値だけクリア
-
期限を超えた日付に警告のメッ...
-
【マクロ】実行時エラー '424':...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを使って検索したセルをコピ...
-
DataGridViewに空白がある場合...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
おすすめ情報