- ベストアンサー
エクセルのマクロVBAでのデータ検索と置換について
- エクセルのマクロVBAを使用して、あるシート内のデータを別のシートで検索し、置換する方法について質問です。
- 一つのシートには(1)と(2)のデータがあり、もう一つのシートには(3)と(4)のデータが存在します。
- (1)のデータ内を検索して、別のシートで置換リスト(3)を検索し、該当する値があれば、(2)に(4)の値を記載し、なければ元の値をそのまま(2)に記載するという処理をしたいです。
- みんなの回答 (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の括弧内が何を表してるかは、自力で調べてね