データ転記のマクロ作成をお願いします。


エクセルファイルは①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ポイント差し上げます。

是非お力添えを頂ければと思います。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2013/04/18 10:50:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:skychance No.1

回答回数7ベストアンサー獲得回数2

ポイント600pt

以下のようなマクロでいかがでしょうか。
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件)

id:skychance No.1

回答回数7ベストアンサー獲得回数2ここでベストアンサー

ポイント600pt

以下のようなマクロでいかがでしょうか。
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

id:tororosoba

skychanceさん、

早速のご返信ありがとうございます。

動作環境、確認できました。

大変に助かります、ありがとうございました!

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません