私はいくつかのウェブサイトとブログを見て、サンプルコードを出して下に投稿しました。重複行を見つけて、別の列vbaの結果を集計します。Excel
私は、18000行と26列の巨大なデータを持っています。私は、これらの3つの列の行が同じである場合、列(B、F、G)に基づいて重複行を見つけなければならない。重複行に別の列のセルの値を集計し、唯一の重複する行を保持する。
サンプルデータ:
A(Name) B(Mat_Num) C(Items) D(group) E(Summon) F(Plant) G(Batch_num)
1.Ram 1235 HA1 Micro 545.5 1327 893A1
2.ram 12354 rt2 Senf 5678 0001 1063F
3.Joseph 12354 cf1 Macro 9844 0001 1063F
4.andreas 12354 dw1 HR 6633.95 0001 1063F
5.John 1235 ff1 Finance 22555.09 1327 893A1
6.Russel 987 ad1 Sales 6423 0001 jjg67
7.Holger 00 dd1 purchase 3333 1327 dd567
8.Gottfried 234 fa1 rot 663 345 45678
結果:あなたは、列Eが表示される場合は、列(B、F、G)に基づいて、重複行が列Eに
A(Name) B(Mat_Num) C(Items) D(group) E(Summon) F(Plant) G(Batch_num)
1.Ram 1235 HA1 Micro 23101 1327 893A1
2.ram 12354 rt2 Senf 22155.95 0001 1063F
合計され残りの重複行を削除する必要があります。
コード: ここに私のコードです。私はそれを理解することができませんでした。誰もアルゴリズムの効果的な方法で私を助けることができます。
Sub Sample()
Dim LastRowcheck As Long, n1 As Long
Dim DelRange As Range
With Worksheets("Sheet1")
LastRowcheck = .Range("A" & .Rows.Count).End(xlUp).Row
For n1 = 1 To LastRowcheck
If .Cells(n1, 1).Value = Cells(n1 + 1, 1).Value Then
If DelRange Is Nothing Then
Set DelRange = .Rows(n1)
Else
Set DelRange = Union(DelRange, .Rows(n1))
End If
End If
Next n1
If Not DelRange Is Nothing Then DelRange.Delete
End With
End Sub
私を助けてください。
@Jeepadはアプリケーションエラーまたはオブジェクト定義エラーとしてこの行にエラーが発生しました.Columns(.Columns.Count).Formula = "= sumifs(e:e、b:b、b2、f:f、f2、g :g、g2) " –
あなたの提供したサンプルデータに基づいています。 xl2003(SUMIFSを持たない)を実行していない限り、どうしてこのようなエラーが発生するのか分かりません。 – Jeeped
@Jeepad私はxl2013を実行しています。どこが間違っているのかわかりません。 –