Как настраивать сортировку и добавлять ячейки?

У меня есть лист excel с сотнями записей. Столбец «C» имеет название этой конкретной учетной записи. Столбец «D» имеет сумму, которая должна быть применена к этой учетной записи. * Столбец примечания «C» может иметь повторяющиеся значения.

Столбец «M» имеет список всех возможных имен, которые могут отображаться в столбце «C», а столбец «N» имеет номер 1 – ???? в порядке, в котором эти элементы должны быть сгруппированы после добавления в лист2.

Пример:

Column C Column D Column M Column N John $500 John 1 Jane -$600 Jane 2 Jack $250 Jack 3 Jane $45.00 Joe 4 Joe Jay 5 Jack $0.00 Jayson 6 Jay $85 Jill 7 

Лист 2 должен иметь приведенные выше данные в порядке по столбцу «N» и добавил

Кажется, как сводный стол для меня. Нумерация в первом столбце – это всего лишь цепочка данных «IF» s Data-Source of the Pivot: Tabelle1! $ B $ 4: $ D $ 10 введите описание изображения здесь

например, B5: =IF(C5=$F$5;$G$5;IF(C5=$F$6;$G$6;IF(C5=$F$7;$G$7;IF(C5=$F$8;$G$8;IF(C5=$F$9;$G$9;IF(C5=$F$10;$G$10;IF(C5=$F$11;$G$11;"")))))))

вы можете попробовать этот (прокомментированный) код:

 Option Explicit Sub main() Dim cell As Range, namesRng As Range, dataRng As Range With Worksheets("Sheet1") '<-- reference "Sheet1" (change "Sheet1" to your actual data sheet name) Set dataRng = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)).Resize(, 2) '<--| set the data range from cell "C1" to column "D" cell in column "C" last non empty row With .Range("M1", .Cells(.Rows.Count, "M").End(xlUp)).Resize(, 2) '<-- reference names/order range from cell "M1" to column "N" cell in column "M" last non empty row .Sort key1:=.Range("B1"), order1:=xlAscending, Header:=xlNo '<-- sort names in column "M" by column "N" order number Set namesRng = .Columns(1).Cells '<-- set ordered names range End With End With With Worksheets("Sheet2") '<-- reference "Sheet2" (change "Sheet2" to your actual output sheet name) For Each cell In namesRng '<-- loop through ordered name range .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2).Value = Array(cell.Value, WorksheetFunction.SumIf(dataRng.Columns(1), cell.Value, dataRng.Columns(2))) '<--| write current name in Sheet2 column "A" current empty cell after last not empty one, and corresponding sum in adjacent cell Next cell End With End Sub 

если имена в столбце «M» всегда уже правильно упорядочены, тогда нет необходимости сортировать их по столбцу «N», а код немного упрощается:

 Option Explicit Sub main() Dim cell As Range, namesRng As Range, dataRng As Range With Worksheets("Sheet1") '<-- reference "Sheet1" (change "Sheet1" to your actual data sheet name) Set dataRng = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)).Resize(, 2) '<--| set the data range from cell "C1" to column "D" cell in column "C" last non empty row Set namesRng = .Range("M1", .Cells(.Rows.Count, "M").End(xlUp)) '<-- set ordered names range End With With Worksheets("Sheet2") '<-- reference "Sheet2" (change "Sheet2" to your actual output sheet name) For Each cell In namesRng '<-- loop through ordered name range .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2).Value = Array(cell.Value, WorksheetFunction.SumIf(dataRng.Columns(1), cell.Value, dataRng.Columns(2))) '<--| write current name in Sheet2 column "A" current empty cell after last not empty one, and corresponding sum in adjacent cell Next cell End With End Sub 
Interesting Posts

Активная кнопка X для открытия встроенного, слияния Word Document … Ошибка произошла

Вместо запятой вместо десятичной запятой используйте запятую при сохранении текста

Финансовая отчетность, вставленная рядом со старым

Python: индексирование таблицы Excel в словаре

Внедрение формулы массива Excel в c #

VBA читает zip-файл

Иерархия тегов HTML VBA

Получите уникальные счета в excel

Может ли Excel суммировать / объединять x количество точек данных и показывать среднее значение, а не показывать все данные?

Как указать путь к файлу excel в моем VBA?

Как я могу изменить пользователя, служба C # открывает приложение excel?

Как передать параметры типа IN и OUT в хранимую процедуру, вызванную в ORACLE PLSQL Block из макроса VBA в excel

Auto Fit Excel Column Width на основе имен столбцов в строке 1

Очистка плохих данных в Excel, разделение слов заглавными буквами

Как создать раскрывающийся список в листе excel?

Давайте будем гением компьютера.