Консолидация, объединение и суммирование значений в vba

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

Например: введите здесь описание изображения

Я хочу объединить данные в столбцах от A до D, используя столбец A в качестве моей «точки отсчета» для сопоставления. Затем я хочу, чтобы значения были добавлены вместе в столбцах E и F. Давая мне результаты ниже.

введите здесь описание изображения

Я уверен, что для этого есть простое решение, но я новичок в VBA и ничего не встречал.

Спасибо


person jufg    schedule 23.11.2017    source источник
comment
Сводная таблица спешит на помощь!   -  person Scott Holtzman    schedule 23.11.2017
comment
Я хочу, чтобы это выполнялось автоматически как часть процесса, и поэтому хочу сделать это с помощью VBA.   -  person jufg    schedule 23.11.2017
comment
Так что запишите, как вы строите сводную таблицу, и у вас будет решение vba.   -  person Harassed Dad    schedule 23.11.2017


Ответы (1)


Это можно сделать с помощью следующего кода:

Sub foo()
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
For x = 2 To LastRow
    Sheet1.Cells(x, 7).Value = "=SUMIF(R1C1:R17C6,RC[-6],C[-2])"
    Sheet1.Cells(x, 8).Value = "=SUMIF(R1C1:R17C6,RC[-7],C[-2])"
Next x

Range("G2:H" & LastRow).Copy
Range("G2:H" & LastRow).PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("E2:F" & LastRow).Delete Shift:=xlToLeft
Sheet1.Range("$A$1:$H$" & LastRow).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlNo
End Sub

По сути, код суммирует все значения в столбцах G и H, затем копирует и вставляет в качестве значений (чтобы избавиться от формул в ячейках), затем удаляет содержимое из столбцов E и F, сдвигаясь влево, чтобы получить новые значения. в правые столбцы, и, наконец, он удаляет все дубликаты, чтобы предоставить вам скомпилированный список, как вы хотели.

person Xabier    schedule 23.11.2017