どなたかお願いしたいです。 以下のようなマクロを組みたいです、手数ですが宜しくお願いします。 ◆専用ブックのマクロボタンより各エクセルにデータを転記する 【添付した画像1のような表】専用ブックを使い複数の転記元から複数の転記先のエクセルにデータをそれぞれ転記したい 【添付した画像1より・・赤枠】◆条件(転記ブックの条件について)①エクセルは転記先も転記元も指定したフォルダに入れています②どの転記先、転記元の日付はすべてyyyy\u0026quot;年\u0026quot;m\u0026quot;月\u0026quot;です 転記先の日付は4月~3月までの1年分それぞれ同じ行で入ってます③転記元の日付(G1)をみて、転記先の(該当行)に合致した列の範囲に数値を転記 ※転記範囲は転記元、転記先それぞれF列となります。④転記ブック内のA列の同じ番号に転記したいです。 ※例えば1なら1 Book1.xlsm →BookA.xlsmの該当条件で転記 ※今後追加も考えて全部でA列は転記元、転記先それぞれ1~10としています ※セルが空白の場合は該当なしとしてERRORにならないようにしたいですエクセルの転記イメージ(青枠) すみませんが宜しくお願いします。

1件の回答

回答を書く

1254813

2026-02-19 03:15

+ フォロー

[昨日挙げた回答]

前の質問

yahoo.co.jp/qa/question_detail/q12321550532">https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12321550532

これとはまた別の内容なのですか?

違うとしても、画像の赤枠はセルアドレス(行と列)がわかりません。

行番号と列が見える表を添付して下さい。

条件は10個限定でいいのかが不明です。



返信がなかったので条件の表は、こちらで添付したものとしてのコ-ドです。



転記先データは先頭行の数字だけにして下さい。~を使うと数が違う懸念があります。(貴方の添付図の2件目は元が16行で、先が15行になっています)



転記元の列の情報がないので、日付と同じ列としています。



Sub test()

Dim wb1 As Workbook, wb2 As Workbook

Dim sh As Worksheet

Dim sh1 As Worksheet, sh2 As Worksheet

Dim r As Long

Dim dcol As String

Dim r1 As Long, r2 As Long

Dim r3 As Long, r4 As Long

Dim rng As Range

Dim c As Variant

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Set sh = ActiveSheet

With sh

For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row

If .Cells(r, 1).Value \u0026lt;\u0026gt; \u0026quot;\u0026quot; Then

Set wb1 = Workbooks.Open(.Cells(r, 2).Value \u0026amp; .Cells(r, 1).Value)

Set sh1 = wb1.Worksheets(.Cells(r, 3).Value)

Set wb2 = Workbooks.Open(.Cells(r, 8).Value \u0026amp; .Cells(r, 7).Value)

Set sh2 = wb2.Worksheets(.Cells(r, 9).Value)

dcol = Left(.Cells(r, 4).Value, 1)

r1 = Split(.Cells(r, 5).Value, \u0026quot;~\u0026quot;)(0)

r2 = Split(.Cells(r, 5).Value, \u0026quot;~\u0026quot;)(1)

r3 = .Cells(r, 10).Value

r4 = .Cells(r, 11).Value

Set rng = sh2.Range(sh2.Cells(r3, 1), sh2.Cells(r3, sh2.Cells(r3, Columns.Count).End(xlToLeft).Column))

c = Application.Match(CLng(sh1.Range(.Cells(r, 4).Value)), rng, 0)

If IsError(c) = False Then

sh2.Cells(r4, c).Resize(r2 - r1 + 1, 1).Value = sh1.Range(dcol \u0026amp; r1).Resize(r2 - r1 + 1, 1).Value

End If

wb1.Close

wb2.Close SaveChanges:=True

End If

Next r

End With

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox \u0026quot;転記終了\u0026quot;

End Sub



前の質問でBAでなかったのでこのコードではだめなのかもしれません。

うまくいかない場合は質問を閉じないでうまくいかない点を連絡して下さい。



※画像はクリックすると拡大されます

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有