エクセルVBAマクロを自動作成する無料アプリです。
例として「日付が一致する(別のシートの)行にデータ転記する」VBAマクロを作成します。
事例 日付が一致する行にデータ転記する
できました😊
なお、値が一致したら転記のパターンは下記があります😊
アプリの設定
アプリのトップページ
⇒▼転記・上書き・新規追加・比較
⇒【ツール】値が一致したら転記する(値の横に)
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
Sub デモ() '値が一致したら転記する
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
'辞書オブジェクトの作成
Dim 辞書 As Object
Set 辞書 = CreateObject("Scripting.Dictionary")
'転記元の設定
Dim 最終行 As Long, 表配列() As Variant
Sheets("Sheet1").Select
最終行 = Cells(Rows.Count, Range("a2").Column).End(xlUp).Row
表配列 = Range("a2" & ":" & Cells(最終行, Range("c2").Column).Address(False, False)).Value
'辞書の作成
Dim キー As Variant, 対象行 As Long
For 対象行 = 1 To UBound(表配列, 1)
キー = 表配列(対象行, 1)
If 辞書.Exists(キー) Then
Cells(Range("a2").Row + 対象行 - 1, Range("a2").Column).Select
MsgBox "選択した行に重複があるので終了します"
Exit Sub
Else
辞書(キー) = Array(表配列(対象行, 2), 表配列(対象行, 3))
End If
Next
Erase 表配列
'転記先 シートの選択
Sheets("Sheet1").Select
'対象を配列に入れる
Dim 対象配列() As Variant, 最終行2 As Long
最終行2 = Cells(Rows.Count, Range("e2").Column).Offset(0, 1 - 1).End(xlUp).Row
対象配列 = Range("e2" & ":" & Cells(最終行2, Range("g2").Column).Address(False, False)).Value
'対象配列に辞書のアイテムを入れる
Dim 行 As Long
For 行 = 1 To UBound(対象配列, 1)
キー = 対象配列(行, 1)
If 辞書.Exists*1 Then
対象配列(行, 2) = 辞書(キー)(0)
対象配列(行, 3) = 辞書(キー)(1)
End If
Next 行
'対象配列をシートに反映する
Sheets("Sheet1").Range("e2").Resize(UBound(対象配列), UBound(対象配列, 2)).Value = 対象配列
'Application.ScreenUpdatingとApplication.DisplayAlertsをTrueに戻す
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
ChatGPTで修正
あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!
アプリはこちらから↓↓↓↓
*1:キー