エクセルファイルは①Masterfile.xls、②ユーザーが任意で開いているものと、2つあります。
Masterfile.xlsのA列(A2以降)には文字列、B列(B2以降)にはマイナス数値が入っています。
マクロで①のA列にある文字列を②のC列で検索をかけ、もしマッチした場合はMasterfile.xlsにある文字列にマッチしたB列の数値を②のF列の数値に上書きしていくマクロを作成していただけると有難いです。①のA列、②のC列ともに数十行ありますので、ループしていただけると大変に助かります。任意で開いているファイルですが、毎回ファイル名が違います。
[Masterfile.xls]
A列 B列
Absde111 -30
[任意で開いているファイル]
C列 F列
Absde111 -30
現在、検索、転記、ともにマニュアル作業で行っています。
データ転記のマクロ作成をお願いします。もしそのまま使える完全な回答をしていただいた最初の回答者の方に、お気持ちですが500ポイント差し上げます。
是非お力添えを頂ければと思います。
以下のようなマクロでいかがでしょうか。
Mastarfileのほうにマクロをコピーしていただければ動くと思います。
念のためダミーのファイルで動作確認していただけると幸いです。
任意のファイルのC列が空欄になるまで動く設定になっています。
任意のファイルは毎回かわるとのことでしたので、
ダイアログボックスを開くようにしました。
いかがでしょうか。
Sub Sample1()
Dim OpenFileName As String
Dim filename As String
Dim actBk As Workbook
Dim i, j As Integer
Set actBk = ThisWorkbook
OpenFileName = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
filename = Dir(OpenFileName)
End If
i = 1
Do Until Workbooks(filename).Sheets(1).Cells(i, 3) = ""
j = 1
Do Until actBk.Sheets(1).Cells(j, 1) = ""
If Workbooks(filename).Sheets(1).Cells(i, 3) = actBk.Sheets(1).Cells(j, 1) Then
Workbooks(filename).Sheets(1).Cells(i, 6) = actBk.Sheets(1).Cells(j, 2)
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub
以下のようなマクロでいかがでしょうか。
Mastarfileのほうにマクロをコピーしていただければ動くと思います。
念のためダミーのファイルで動作確認していただけると幸いです。
任意のファイルのC列が空欄になるまで動く設定になっています。
任意のファイルは毎回かわるとのことでしたので、
ダイアログボックスを開くようにしました。
いかがでしょうか。
Sub Sample1()
Dim OpenFileName As String
Dim filename As String
Dim actBk As Workbook
Dim i, j As Integer
Set actBk = ThisWorkbook
OpenFileName = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
filename = Dir(OpenFileName)
End If
i = 1
Do Until Workbooks(filename).Sheets(1).Cells(i, 3) = ""
j = 1
Do Until actBk.Sheets(1).Cells(j, 1) = ""
If Workbooks(filename).Sheets(1).Cells(i, 3) = actBk.Sheets(1).Cells(j, 1) Then
Workbooks(filename).Sheets(1).Cells(i, 6) = actBk.Sheets(1).Cells(j, 2)
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub
コメント(0件)