2017-12-05 3 views
-1

クローンで重複を見つけて1つのセルとしてマージし、隣接する列を追加して1つのセル値として表示するにはどうすればよいですか? 要するに、表1を表2形式に変換する方法は? 表1重複する行を結合して次の列を集計します。

|---------------------|------------------| 
|  Heading 1  |  Heading 2 | 
|---------------------|------------------| 
|   12   |   34  | 
|---------------------|------------------| 
|---------------------|------------------| 
|   12   |   54  | 
|---------------------|------------------| 
|---------------------|------------------| 
|   13   |   43  | 
|---------------------|------------------| 

表2以下

|---------------------|------------------| 
|  Heading 1  |  Heading 2 | 
|---------------------|------------------| 
|   12   |   88  | 
|---------------------|------------------| 
|---------------------|------------------| 
|   13   |   43  | 
|---------------------|------------------| 

私が試みたコードです。これは、合計するSUMIF式で満たされているヘルパー列として、列Cを使用しています

Sub sbFindDuplicatesInColumn() 
Dim lastRow As Long 
Dim matchFoundIndex As Long 
Dim iCntr As Long 
lastRow = Range("A65000").End(xlUp).Row 
For iCntr = 1 To lastRow 
If Cells(iCntr, 1) <> "" Then 
matchFoundIndex = WorksheetFunction.Match(Cells(iCntr, 1), Range("A1:A" & 
lastRow), 0) 
If iCntr <> matchFoundIndex Then 
Cells(iCntr, 2) = "Duplicate" 
End If 
End If 
Next 
End Sub 
+0

あなたが今まで試してみましたコードを共有して下さい! –

+0

'heading1'はソートされているのですか、それともランダムですか? –

答えて

0

をそれだけでは重複として重複する値をマークし、私は値を合計することができませんし、前のセルに表示しすべての値が列Aの値と一致した後、列Bを削除して列Cをその場所に移動してから、重複を削除して目的の結果を得ます。あなたが望むよう

次は実行する必要があります。

Sub foo() 
    LastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row 'find the last row with data 
    Sheet1.Cells(1, 3).Value = "Heading 2" 'add heading to column C 
     For i = 2 To LastRow 
      Sheet1.Cells(i, 3).Value = "=SUMIF(C[-2],RC[-2],C[-1])" 'enter formula to sum values of column B into column C 
     Next i 
    Sheet1.Range("C:C").Copy 'Copy values of column C 
    Sheet1.Range("C:C").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'paste as values on column C 
    Range("B:B").Delete Shift:=xlToLeft 'Delete Column B and shift Column C to the left 
    Application.CutCopyMode = False 
    Sheet1.Range("$A$1:$B$" & LastRow).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes ' Remove duplicates 
End Sub 
+0

これは解決策ではありません。 :)彼は重複した値をマージし、値を追加したい –

+0

私はちょうどこれを試してテストして、それは彼が要求したとおりに正確に行います... – Xabier

0

は、ピボットテーブルを使用してください:

pivot 1

pivot 2

pivot 3

あるいは、VBAと同じピボットテーブルを作る:

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Sheet1!R1C1:R4C2", Version:=6).CreatePivotTable TableDestination:="Sheet1!R1C4", TableName:="PivotTable1" 
With ActiveSheet.PivotTables("PivotTable1") 
    .PivotFields("Heading 1").Orientation = xlRowField 
    .AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("Heading 2"), "Sum of Heading 2", xlSum 
End With 

関連する問題