
No.10ベストアンサー
- 回答日時:
No9さんので重複してないデータの抽出は完了ですが、
補足にあった
> SheetAにありSheetBにない
S> heetBにありSheetAにないものを区別して抜き出したいのです。よろしくお願いします。
は充足できてないですね。
No9のコードをそのままお借りして以下のようにすると、Sheet3で列を変えて表示できますので区別できます。
Sub test()
Dim gyoA As Integer 'A最大値
Dim gyoB As Integer 'B最大値
Dim i As Integer 'ループ用
Dim ii As Integer 'ループ用
Dim iii As Integer '記入カウンタ
Dim flg '一致ものがあるかのフラグ
iii = 1 '記入開始行
gyoA = Sheet1.Range("A1").End(xlDown).Row
gyoB = Sheet2.Range("A1").End(xlDown).Row
For ii = 1 To gyoB Step 1
flg = 0
For i = 1 To gyoA Step 1
If Sheet1.Cells(i, 1) = Sheet2.Cells(ii, 1) Then
flg = 1
End If
Next
If flg = 0 Then
Sheet3.Cells(iii, 1) = Sheet2.Cells(ii, 1)
iii = iii + 1
End If
Next
iii = 1 '記入開始行を1にどす
For i = 1 To gyoA Step 1
flg = 0
For ii = 1 To gyoB Step 1
If Sheet1.Cells(i, 1) = Sheet2.Cells(ii, 1) Then
flg = 1
End If
Next
If flg = 0 Then
Sheet3.Cells(iii, 2) = Sheet1.Cells(i, 1)'2列目に表示
iii = iii + 1
End If
Next
End Sub
No.9
- 回答日時:
わけわからなくなると思いましたので全部書きます
dim gyoA as integer 'A最大値
dim gyoB as integer 'B最大値
dim i as integer 'ループ用
dim ii as integer 'ループ用
dim iii as integer '記入カウンタ
dim flg '一致ものがあるかのフラグ
iii=1 '記入開始行
gyoA=sheet1.range("A1").end(xldown).row
gyoB=sheet2.range("A1").end(xldown).row
for ii = 1 to gyoB step 1
flg=0
for i = 1 to gyoA step 1
if sheet1.cells(i,1)=sheet2.cells(ii,1) then
flg=1
end if
next
if flg=0 then
sheet3.cells(iii,1)=sheet2.cells(ii,1)
iii=iii+1
end if
next
for i = 1 to gyoA step 1
flg=0
for ii = 1 to gyoB step 1
if sheet1.cells(i,1)=sheet2.cells(ii,1) then
flg=1
end if
next
if flg=0 then
sheet3.cells(iii,1)=sheet1.cells(i,1)
iii=iii+1
end if
next
No.7
- 回答日時:
#4のところ
最後のnextの後ろに
for i = 1 to gyoA step 1
flg=0
for ii = 1 to gyoB step 1
if sheet1.cells(i,1)=sheet2.cells(ii,1) then
flg=1
end if
next
if flg=0 then
sheet3.cells(iii,1)=sheet1.cells(i,1)
iii=iii+1
end if
next
を追加してください
この回答への補足
やはり
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
がエラーになります。
「実行時エラー1004
アプリケーション定義またはオブジェクト定義のエラーです」となります。
No.5
- 回答日時:
またまた 手打ちなものでまちがいが
sheet()はsheetsに変更
for i = gyoA+gyoB to 1 step -1
は
for i = gyoA+gyoB to 2 step -1
に変更してください。なお後者のマクロは
SheetAの中のデータも重複を取ります
この回答への補足
なんどもありがとうございます。
変更をして実行したところ
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
がエラーになります。
また、この方法だと、AにありBにない。およびその逆の区別がつかないのでは?
No.4
- 回答日時:
がんがん追加してしまってすいません
dim gyoA as integer 'A最大値
dim gyoB as integer 'B最大値
gyoA=sheets(1).range("A1").end(xldown).row
gyoB=sheet(2).range("A1").end(xldown).row
sheets(1).range("A1:A"&gyoA).copy
sheet(3).range("A1").pastespecial
sheet(2).range("A1:A"&gyoB).copy
sheet(3).range("A"&gyoA+1).pastespecial
sheets(3).activate
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
for i = gyoA+gyoB to 1 step -1
if cells(i,1)=cells(i-1,1) then
cells(i,1).delete shift:=xlup
end if
next
が早いかな
No.3
- 回答日時:
#1です
両方でしたね
変数を初期化して
全部をコピー、for・・・のみをひっくり返して追加すれば大丈夫です
ちょっと時間がかかるのが難点
マクロだとそうなるのかな
No.2
- 回答日時:
まず変数を持たせます
dim gyoA as integer 'A最大値
dim gyoB as integer 'B最大値
dim i as integer 'ループ用
dim ii as integer 'ループ用
dim iii as integer '記入カウンタ
dim flg '一致ものがあるかのフラグ
iii=1 '記入開始行
gyoA=sheet1.range("A1").end(xldown).row
gyoB=sheet2.range("A1").end(xldown).row
for ii = 1 to gyoB step 1
flg=0
for i = 1 to gyoA step 1
if sheet1.cells(i,1)=sheet2.cells(ii,1)
flg=1
end if
next
if flg=0 then
sheet3.cells(iii,1)=sheet2.cells(ii,1)
iii=iii+1
end if
next
でどうでしょうか
ありがとうございます。
if sheet1.cells(i,1)=sheet2.cells(ii,1)のあとにThenをつけて、片っ方はうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて 重複したものがあれば行を削除するとい 1 2023/02/27 18:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(Microsoft Office) VBA CSV出力について 3 2023/04/19 14:14
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA シート間のコピー・...
-
VBA
-
エクセルマクロでシートの比較
-
VBからExcelを使用したいのですが…
-
VB2010でのExcel操作
-
Excel UserForm の表示位置
-
複数のエクセルファイルとシー...
-
マクロ1があります。 A1のセル...
-
VBAマクロ実行時エラーの修正に...
-
特定の文字がある行以外を削除...
-
vba 2つの条件が一致したら...
-
VBA 別ブックからコピペしたい...
-
VBA シートをコピーする際に Co...
-
「段」と「行」の違いがよくわ...
-
Excelのフィルター後の一番上の...
-
【Excel関数】UNIQUE関数で"0"...
-
特定の色のついたセルを削除
-
エクセルで特定の文字列が入っ...
-
[Excel2003] マクロのユニコー...
-
エクセルで複数のシートのクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA
-
Range("A1")⇔cells(1,1)の変換。
-
vba formulaの中での変数の扱い
-
VBA SUM関数に変数を入れた計算...
-
AccessVBAから、Excelシート内...
-
エクセルのマクロで範囲を値貼...
-
VB2010でのExcel操作
-
連続ではない三つのセルの値の...
-
「段」と「行」の違いがよくわ...
-
VBA シートをコピーする際に Co...
-
エクセルで離れた列を選択して...
-
VBAマクロ実行時エラーの修正に...
-
Excelで、あるセルの値に応じて...
-
別ブックをダイアログボックス...
-
Worksheets メソッドは失敗しま...
-
【Excel関数】UNIQUE関数で"0"...
-
マクロの「SaveAs」でエラーが...
-
vba 2つの条件が一致したら...
-
特定の文字がある行以外を削除...
-
特定の色のついたセルを削除
おすすめ情報