下記データがありますが、A列で重複しているデータを削除したいです。
ただし、重複しているA列のデータのB列の数値を合計して残したいです。(VBAにて)
ピボットテーブルも考えましたが、https://oshiete.goo.ne.jp/qa/11175727.htmlのように
パソコンによってエラーになってしまいます。
他にSUMIFで工夫しようとしましたが、100万行ぐらいあるデータなので処理にすごく時間が
かかってしまいました。
構文をご教授頂けないでしょうか。
例
A B
1 名前 数量
2 BB 1
3 BB 3
4 AA 2
5 BB 10
・
・
↓
A B
1 名前 数量
2 BB 14
3 AA 2
No.2
- 回答日時:
100万行となるとどうやっても処理は重くなりますが PowrQuery
ならピボットテーブルと違って 100万行でも計算します。
[名前]に対して[列のピボット]を[数量]の[合計]で実行してから
集計結果に対して [列のピボット解除]を実行すればいいです。
No.1ベストアンサー
- 回答日時:
こんにちは!
>100万行ぐらいあるデータなので・・・
行数としては4万8千行程度余裕があるといってもExcelでは少しきついかもしれませんね。
一例です。
元データに手を付けるのではなく、別シートに表示する方法にしてみました。
元データはSheet1にあり、Sheet2に表示するとします。
標準モジュールです。
Sub Sample1()
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim wS As Worksheet
Dim myKey, myItem, myR
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
wS.Range("A:B").ClearContents
With Worksheets("Sheet1")
wS.Range("A1:B1").Value = .Range("A1:B1").Value
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(2, "A"), .Cells(lastRow, "B"))
For i = 1 To UBound(myR, 1)
If Not myDic.exists(myR(i, 1)) Then
myDic.Add myR(i, 1), myR(i, 2)
Else
myDic(myR(i, 1)) = myDic(myR(i, 1)) + myR(i, 2)
End If
Next i
End With
myKey = myDic.keys
myItem = myDic.items
myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B"))
For i = 0 To UBound(myKey)
myR(i + 1, 1) = myKey(i)
myR(i + 1, 2) = myItem(i)
Next i
Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B")) = myR
Set myDic = Nothing
MsgBox "完了"
End Sub
ある程度の時間短縮はできるはずです。
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
Excelで2つのデータの突合せを...
-
複数の条件に合う行番号を取得...
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
差し込み印刷 «Next Record»に...
-
エクセル2016にて、行挿入&コピ...
-
Excelの30個ずつの平均値の出し方
-
重複データの削除(数値列は合...
-
【Excel】小計単位で並べ替えを...
-
エクセルで2つ以上のリスト比...
-
エクセルVBA C列に特定の文字列...
-
セル内の年月を数える
-
<EXCEL>月別にデータ数をカウ...
-
【ExcelVBA】A列に値のある行を...
-
Countifよりも早く重複数をカウ...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
A1セルに入力したら、入力時間...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
Excelで2つのデータの突合せを...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
Excelの30個ずつの平均値の出し方
-
エクセルで横並びの複数データ...
-
エクセルVBA C列に特定の文字列...
-
VBA 数式を最終行までコピー
-
500行の中から、多い順に抽出す...
-
エクセルで1つの会社名に対して...
-
VBA 大きなtxtテキストファ...
-
【エクセル】1列内に複数ある同...
-
エクセルで時刻だけを抜き出す...
-
エクセル~空白のセルのある行...
-
Excelの関数でこんな処理ができ...
-
Excel VBA 【QueryTables.Add】...
おすすめ情報