• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロVBAの VLOOKUPと条件分岐について)

エクセルのマクロVBAでのデータ検索と置換について

このQ&Aのポイント
  • エクセルのマクロVBAを使用して、あるシート内のデータを別のシートで検索し、置換する方法について質問です。
  • 一つのシートには(1)と(2)のデータがあり、もう一つのシートには(3)と(4)のデータが存在します。
  • (1)のデータ内を検索して、別のシートで置換リスト(3)を検索し、該当する値があれば、(2)に(4)の値を記載し、なければ元の値をそのまま(2)に記載するという処理をしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • pulsa
  • ベストアンサー率57% (34/59)
回答No.1

ほい 標準モジュールに書けば動く Option Explicit Sub SHT_Check()     Dim iCnt As Integer     Dim iMax As Integer     Dim jCnt As Integer     Dim jMax As Integer     Dim SHT1 As Worksheet     Dim SHT2 As Worksheet     Set SHT1 = Sheets("Sheet1") '以下Sheets("Sheet1")の代わりに使用     Set SHT2 = Sheets("Sheet2") '以下Sheets("Sheet2")の代わりに使用     iMax = SHT1.Range("A1").CurrentRegion.Rows.Count 'Sheets("Sheet1")の最大行数(ループ回数)     jMax = SHT2.Range("A1").CurrentRegion.Rows.Count 'Sheets("Sheet2")の最大行数(ループ回数)     For iCnt = 1 To iMax '1行目からデータが連続する間ループ         For jCnt = 1 To jMax '1行目からデータが連続する間ループ             If SHT1.Cells(iCnt, 1).Value = SHT2.Cells(jCnt, 1).Value Then 'もし値が一致してたら                 SHT1.Cells(iCnt, 2).Value = SHT2.Cells(jCnt, 2).Value '変換                 Exit For '置き換えたら後続不要(次は当然一致しないから、再変換防止)             Else '違ってたら                 SHT1.Cells(iCnt, 2).Value = SHT1.Cells(iCnt, 1).Value 'B列iCnt行に入力             End If         Next jCnt     Next iCnt End Sub データが連続してない(空白セルがある)と失敗するかも ああ、それとたぶんこのままじゃ実際には使えないだろうから、シート名はどこを置き換えるとか、cellsの括弧内が何を表してるかは、自力で調べてね