2013-11-25 2 views
0

У меня есть два столбца данных. Я хотел бы найти все аналогичные значения в первом столбце, а затем добавить вместе числовые значения в связанном втором столбце. Существуют сотни значений в случайном порядке.Объединение повторяющихся записей и объединение уникальных числовых данных

NickSlash написал код о том, как объединить текстовые значения во втором столбце, когда встречаются аналогичные значения в первом столбце. Я полный новичок. В принципе, код NickSlash написал, это потрясающе, за исключением того, что у меня есть числовые значения, которые нужно добавить вместе во второй столбец. Ответ на этот вопрос NickSlash можно найти здесь. Combining duplicate entries with unique data in Excel

Код NickSlash написал ниже, мне бы хотелось, чтобы код был подобен этому, в отличие от формул в электронной таблице.

Option Explicit 

Sub Main() 
Dim Source As Worksheet: Set Source = ThisWorkbook.Worksheets("Sheet1") 
Dim Destination As Worksheet: Set Destination = ThisWorkbook.Worksheets("Sheet2") 

Dim Records As Object: Set Records = CreateObject("Scripting.Dictionary") 

Dim Data As Variant 
Dim Index As Long 
Dim Row As Integer: Row = 1 

Data = Source.Range("A1", "B" & Source.Rows(Source.UsedRange.Rows.Count).Row).Value2 

For Index = LBound(Data, 1) To UBound(Data, 1) 
    If Records.Exists(Data(Index, 1)) Then 
     Destination.Cells(Records(Data(Index, 1)), 2).Value2 = Destination.Cells(Records(Data(Index, 1)), 2).Value2 & ", " & Data(Index, 2) 
    Else 
     Records.Add Data(Index, 1), Row 
     Destination.Cells(Row, 1).Value2 = Data(Index, 1) 
     Destination.Cells(Row, 2).Value2 = Data(Index, 2) 
     Row = Row + 1 
    End If 
Next Index 

Set Records = Nothing 

End Sub 

ответ

0

Если вы хотите сделать это с кодом вместо SUMIF вы должны просто нужно заменить эту строку

Destination.Cells(Records(Data(Index, 1)), 2).Value2 = Destination.Cells(Records(Data(Index, 1)), 2).Value2 & ", " & Data(Index, 2) 

с

Destination.Cells(Records(Data(Index, 1)), 2).Value2 = Destination.Cells(Records(Data(Index, 1)), 2).Value2 + Data(Index, 2) 

Гордон

Смежные вопросы