人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: tororosoba
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● skychance
●600ポイント ベストアンサー

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


質問者から

skychanceさん、

早速のご返信ありがとうございます。
動作環境、確認できました。
大変に助かります、ありがとうございました!


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ