表Aに「ない」データだけを表Bから追加するマクロの作り方です。コピペで動きます。
成果物
Sheet1のA列にデータがあり、
Sheet2のA列に追加したいデータがある状態でマクロを実行すると、
Sheet2からSheet1へ、Sheet1にないデータだけが追加されます。
この場合「c」はSheet1に既にあるので追加されず、「d」「e」だけが下に追加されます。
この場合「c」はSheet1に既にあるので追加されず、「d」「e」だけが下に追加されます。
このまま使う場合はSheet1、Sheet2のシート名は変えず、各A列に関係ないデータがない状態でご利用ください。
' vba
Sub macro1()
Dim i As Integer
'Sheet1
Dim sht1 As Range
'SHeet2
Dim sht2 As Range
Dim cnt As Integer
'Sheet2のセル数
cnt = WorksheetFunction.CountIf(Sheets("Sheet2").Range("A:A"), "<>")
For i = 1 To cnt
'Sheet2のi行目の文字をSheet1で検索
Set sht2 = Sheets("Sheet2").Cells(i, 1)
Set sht1 = Sheets("Sheet1").Range("A:A").Find(sht2.Value)
'同じ文字が見付からない場合
If sht1 Is Nothing Then
'Sheet1のA列一番下へ移動、追加
Sheets("Sheet1").Range("A1").End(xlDown).Offset(1, 0).Select
Selection.Value = sht2.Value
End If
Next
End Sub
以下、ざっくりですが解説です。
列の一番下を選択
簡単なところからやってきましょう。
列の一番下を選ぶには、範囲・セルにEnd(xlDown)をつければOKです。
列の一番下を選ぶには、範囲・セルにEnd(xlDown)をつければOKです。
この場合、
Sheets("Sheet1").Range("A1").End(xlDown).Select
を実行すれば、Sheet1のA列一番下のセルが選択されます。データを追加したいのはそのさらにひとつ下のセルなので、Offsetプロパティを使い、
Sheets("Sheet1").Range("A1").End(xlDown).Offset(1, 0).Select
としてやれば、A列でデータがある最後のセルのひとつ下、データを追加するためのセルが取得できます。追加判定するデータの数
CountIf関数を使って、Sheet2のA列にある文字数を数えています。
' vba
'Sheet2のセル数
cnt = WorksheetFunction.CountIf(Sheets("Sheet2").Range("A:A"), "<>")
空白ではない(データのある)セルの数を検索する場合は、条件を
"<>"
とすればOKです。一致するデータを検索
データの検索はFindメソッドで行えます。
For Next(繰り返し)がわからなければ、こちらも参照してください。
' vba
'Sheet2のi行目の文字をSheet1で検索
Set sht2 = Sheets("Sheet2").Cells(i, 1)
Set sht1 = Sheets("Sheet1").Range("A:A").Find(sht2.Value)
For Nextの繰り返し回数iを行数に使い、Sheet2のA列のセルを上から順にひとつずつ取得します。
それから、取得したセルと同じ内容のセルがSheet1のA列にあるかを、Findメソッドを使って確認します。
それから、取得したセルと同じ内容のセルがSheet1のA列にあるかを、Findメソッドを使って確認します。
' vba
'同じ文字が見付からない場合
If sht1 Is Nothing Then
'Sheet1のA列一番下へ移動
Sheets("Sheet1").Range("A1").End(xlDown).Offset(1, 0).Select
Selection.Value = sht2.Value
End If
あとは、一致するものが見つからなかった時だけ、Sht2のデータを一番下に追加してやれば目的が達成できます。
Excel(エクセル):行、列
Excelの行、列関係操作、関数、VBAです。他のまとめとかぶる部分が多い場合はリンク貼ります。
行・列の選択
行・列の選択方法です。
テーブル内の行・列一括選択方法です。
VBA(マクロ)で列・...
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
コメント