Оберните строки, у которых есть дубликаты

У меня есть данные, которые выглядят так:

BOB | 4 BOB | 3 BOB | 7 MARY | 1 JOE | 2 JOE | 1 MIKE | 6 

Я хочу получить данные, которые выглядят так:

 BOB | 4 | 3 | 7 MARY | 1 | | JOE | 2 | 1 | MIKE | 6 | | 

Проблема в том, как я могу указать переменное число раз, когда появляется имя?

Я придумал следующий код. Похоже, он может быть чище.

Это будет работать для любого выбранного блока данных на вашем листе (при условии, что он предварительно отсортирован). Он выводится на том же листе в той же области.

 Sub WrapDuplicates() Dim data(), i As Long, startCell As Range, rwCnt As Long, col As Long data = Selection //pull selected data into an array Set startCell = Selection.Cells(1, 1) //Get reference to write results to Selection.ClearContents //remove original data startCell = data(1, 1) //Output first name startCell.Offset(0, 1) = data(1, 2) //Output first value rwCnt = 0 col = 2 For i = 2 To UBound(data) //Loop through array and check if name is same or not and output accordingly If data(i, 1) = data(i - 1, 1) Then startCell.Offset(rwCnt, col) = data(i, 2) col = col + 1 Else rwCnt = rwCnt + 1 col = 2 startCell.Offset(rwCnt, 0) = data(i, 1) startCell.Offset(rwCnt, 1) = data(i, 2) End If Next i End Sub 

Я предполагаю, что вы хотите сделать это в коде на основе тега excel-vba в своем сообщении.

Я также предполагаю, что данные сортируются по имени, или вы в порядке, сортируя его по имени, прежде чем код будет выполнен.

Источник находится в листе 1, цель указана в листе 2. Код находится в Excel VBA. Я проверил ваши данные образца, отбросив эту подпрограмму в разделе ThisWorkbook кода Excel и нажав кнопку воспроизведения.

Заголовок заголовка переписывается каждый раз, что не является идеальным с точки зрения производительности, но я не думаю, что это проблема иначе. Вы можете обернуть его в оператор if, который проверяет целевой столбец index = 2, если он становится проблемой.

 Sub ColumnsToRows() Dim rowHeading Dim previousRowHeading Dim sourceRowIndex Dim targetRowIndex Dim targetColumnIndex sourceRowIndex = 1 targetRowIndex = 1 targetColumnIndex = 2 rowHeading = Sheet1.Cells(sourceRowIndex, 1) previousRowHeading = rowHeading While Not rowHeading = "" If Not previousRowHeading = rowHeading Then targetRowIndex = targetRowIndex + 1 targetColumnIndex = 2 End If Sheet2.Cells(targetRowIndex, 1) = rowHeading Sheet2.Cells(targetRowIndex, targetColumnIndex) = Sheet1.Cells(sourceRowIndex, 2) previousRowHeading = rowHeading sourceRowIndex = sourceRowIndex + 1 targetColumnIndex = targetColumnIndex + 1 rowHeading = Sheet1.Cells(sourceRowIndex, 1) Wend End Sub 

Я разработчик, а не гуру Excel. Там может быть какая-то функция Excel, сводная таблица или какая-либо другая магия Excel, которая делает это для вас автоматически.

  • Как преобразовать несколько строк в набор столбцов?
  • Скопируйте рабочий лист в новую книгу и нажмите кнопку «Макро» в новой книге?
  • VBA Excel - .Window не распознает открытые окна Excel
  • Добавьте условие к этой формуле INDEX MATCH, если оно вернет # N / A
  • Как создать различные гистограммы с использованием одних и тех же данных на основе определенных критериев с использованием формул
  • Несколько "если тогда / или"
  • Функция Excel VBA Range RandBetween возвращает ошибку
  • Таблица преобразования Excel не объединяется
  • скомпилировать ожидаемый список seperator
  • Сгенерируйте последовательный номер 3-го столбца на основе двух данных столбцов
  • Excel: получить все значения из столбца A, где столбец B равен выбранному значению
  • Interesting Posts

    Умножить на заданное значение диапазона

    Формула Excel не будет работать, пока я не получу ячейку, и нажмите enter

    копирование и вставка нескольких диапазонов, зависящих от другого значения ячейки

    Python, странное значение при попытке вычисления ошибки линейной регрессии

    Изменить размер () более конкретно?

    Какая технология наиболее подходит для разработки надстройки для MS Excel

    Непересекающийся адрес в Range

    Сортировка с использованием пользовательского заказа в excel дает ошибку 1004

    Несколько вложенных операторов If – И или не работает

    Суммирование двух или более VLOOKUP в Excel

    Рассчитать проценты В столбце

    Как указать диапазон вместо смещения, excel VBA?

    Преобразование нескольких входных файлов в один файл Excel с помощью Python

    Скопируйте диаграмму и таблицу с листа excel на существующий слайд слайдов PowerPoint 2

    Синтаксис диапазона автофокусировки и выбор динамического диапазона

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