Sub sakujyo()
Dim i, ii As Long
For i = 1 To Range("a65336").End(xlUp).Row
For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1
If Cells(i, 2).Value = Cells(ii, 2).Value _
And Cells(i, 4).Value = Cells(ii, 4).Value _
And Cells(i, 5).Value = Cells(ii, 5).Value Then
Dim iii As Byte
iii = 1
Rows(ii).Delete Shift:=xlUp
End If
Next ii
If iii = 1 Then Rows(i).Delete Shift:=xlUp
iii = 0
Next i
End Sub
データーが下の表のように入っております。
A B C E F
1 1/26 a1234 fdsa 5000 C1
2 1/27 a4567 sdfa 4000 T2
3 1/28 a1234 dfsa 5000 C1
4 1/30 b4567 asdf 6600 A2
5 2/10 b4567 fsda 6600 A2
6 2/10 a1234 afds 5000 C1
B列、E列、F列が完全一致(重複1行目と3行目と6行目・4行目と5行目)で削除し結果的に2行目だけ残る方法がしたいのですが、このマクロですと少ないデータですとうまく動くのですが、『大量のデータを一気に削除出来ない』、『同じ重複が3つ以上のデータが多数ある場合データが削除されずに残ってしまう』エラーが出てしまいます。どうかお教えください。
No.1ベストアンサー
- 回答日時:
シート1のデータをシート2に書き出します。
D列については不明ですが、B・E・F列の重複を判定しています。
書き出し結果と速度に問題があるか、ブックをバックアップしてから試してみて下さい。
Sub try()
Dim myDic As Object
Dim i As Long, j As Long
Dim m As Long, st As String
Dim v, vv
Set myDic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1")
v = .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp).Resize(, 6))
For i = 1 To UBound(v, 1)
st = v(i, 2) & "_" & v(i, 5) & "_" & v(i, 6)
myDic(st) = myDic(st) + 1
Next
End With
ReDim vv(1 To 6, 1 To 1)
j = 1
For i = 1 To UBound(v, 1)
st = v(i, 2) & "_" & v(i, 5) & "_" & v(i, 6)
If myDic(st) = 1 Then
For m = 1 To 6
vv(m, j) = v(i, m)
Next
j = j + 1
ReDim Preserve vv(1 To 6, 1 To j)
End If
Next
With Worksheets("Sheet2")
.Range("A1").Resize(j - 1, 6).Value = _
Application.Transpose(vv)
.Range("A:A").NumberFormatLocal = "m/d"
End With
Set myDic = Nothing
Erase v, vv
End Sub
ご参考になれば。
すばやい対応ありがとうございます。
問題は、ございませんでした。とても早く動いたため驚いております。
大変助かりましたありがとうございます。また、機会がございましたら宜しくお願いいたします。
No.2
- 回答日時:
こんにちは
初見での印象だけで書きますが、
VBAのコードにも問題はあるようですが、それ以前に、
なぜ手作業でやらないのでしょうか?
VBAの学習が目的とも思えないし、手作業の方が早く片付くような気がします。
(本稿は着想のままExcelがない環境で書いてますからヒント程度に)
///
作業セルを2列(仮にH列とI列)用意して、
H列 =B1&":"&E1&":"&F1
I列2行め以下 =IF(COUNTIF($H$1:$H$10000,H2),"Del",0)
のように数式を配置して、
I列に対してジャンプ機能(数式 文字列)で削除対象を選択、
(必要ならソートを挟む)とか。
///
マクロを作るにしても、
ExcelにできることはExcelにやらせる、方法を排除したら、
VBAである意味もないように思います。
マクロの記録でも少し手を加えるだけで十分なものが得られるでしょうし。
マクロを考える際、
「最終的にExcelの機能(この場合は行削除のこと)を使う」処理で
「条件づけ(検索)にExcelの機能が使える」
ならば、
基本的にExcelの機能を軸に作成することをお奨めします。
エラーを出さずに大量のデータを一括処理・・・Excelが得意なことですよね?
その上で、不足が出たなら、また別の方法を考えればよいのかと。
VBAの質問と括らない方が有益な回答が得られるように私には思えました。
意図から外れているようでしたらスミマセン。
なお、本スレッドに対して、これ以上書くつもりはないので、悪しからず。
No.4
- 回答日時:
No2の回答と同意見になってしまうのですが、
マクロで重複検査を実施するよりもCOUNTIFで重複チェックを行う方が容易かと思われます。
G列に
=B1&E1&F1
H列に
=COUNTIF(H$1:H1,H1)
でオートフィルターでH列を1以外で指定し残っている行を削除。
複数のシートにマクロで対応する必要があるのであれば
H列を調べて1以外の行を削除する部分だけマクロ化すれば簡単に作成できると思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報