こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBA テーブル間のコピー

お世話になります。
VBA初心者です。

Excelで、元データであるSheet1にあるテーブルのB列をSheet2にあるテーブルのA列に転記したいと思います。このとき、Sheet2のテーブルにはデータが入っており、そのデータと重複するものを除外したものだけをSheet2テーブルの続きから入力させるにはどうしたらよいでしょうか?

なにとぞご教授のほど、お願いいたします。

投稿日時 - 2020-02-08 02:05:09

QNo.9710369

すぐに回答ほしいです

質問者が選んだベストアンサー

入れ忘れてました。
最後に
Set Sh2 = Nothing
Set Sh1 = Nothing
を追加しておいてください。

投稿日時 - 2020-02-08 09:04:52

お礼

ありがとうございます!!!バッチリ機能しました。
本当に困っていたので助かりました。

投稿日時 - 2020-02-08 11:24:43

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

データ例 Sheet1 A1:B8
区分属性
ay
bx
cz
sx
du
fz
av
Sheet2 A1:B4
区分属性
ay
bx
cz
--
ありきたりのコードだが、
標準モジュールに
Sub test01()
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
lr = sh1.Range("B100000").End(xlUp).Row
'MsgBox lr
For i = 1 To lr
x = sh1.Cells(i, "B")
y = sh1.Cells(i, "C")
If WorksheetFunction.CountIf(sh2.Range("A:A"), x) = 0 Then
sh2.Range("A100000").End(xlUp).Offset(1, 0) = x
sh2.Range("A100000").End(xlUp).Offset(0, 1) = y
End If
Next i
End Sub
実行結果
Sheet2
区分属性
ay
bx
cz
sx
du
fz
ーーー
質問の表現に小生なら異議あり
・テーブルというのは、エクセル独自の仕組みがある。
表という意味で、俗語的な使いはするな。
ーー
・質問表題は、
Sheet1のB列セルデータのうちで、シート2のA列データになければ、追加する。
と表現する方がよかろう.
さすれば画像は添付せずとも判るだろう。
ーー
またコピーというより、データの代入(Let)でよいのではないか。
この表現の結果の差は分かるかな?

投稿日時 - 2020-02-08 11:23:52

お礼

ご回答いただきありがとうございます。
なお、ご指摘いただきました点について。

>テーブルというのは、エクセル独自の仕組みがある。
表という意味で、俗語的な使いはするな
ー こちらは俗語的に「テーブル」という単語を使用したわけではなく、エクセルにおけるテーブル書式、表の意味で質問させていただきました。

>質問表題は、
Sheet1のB列セルデータのうちで、シート2のA列データになければ、追加する。
と表現する方がよかろう.
ーわかりました。今後の参考にさせていただきます。

>またコピーというより、データの代入(Let)でよいのではないか。
ー今後質問する際の参考にさせていただきます。

投稿日時 - 2020-02-12 05:39:42

ANo.1

色々やり方はあると思いますが、単純な方法で

Sub Test()
Dim i As Long
Dim FRange As Range
Dim Sh1 As Worksheet, Sh2 As Worksheet

Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")

For i = 1 To Sh1.Cells(Rows.Count, "B").End(xlUp).Row
Set FRange = Sh2.Range(Sh2.Cells(1, "A"), Sh2.Cells(Rows.Count, "A").End(xlUp)). _
Find(Sh1.Cells(i, "B").Value, LookIn:=xlValues, LookAt:=xlWhole)
If FRange Is Nothing Then
Sh2.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Value = _
Sh1.Cells(i, "B").Value
End If
Next
End Sub

投稿日時 - 2020-02-08 08:35:54

あなたにオススメの質問