Консолидация строк данных Excel - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь найти инструмент для консолидации данных строк в одну позицию в Excel. Ниже приведен пример:

Sample Data

Я хочу иметь возможность объединить запись 0604 с разнесенными данными в одну позицию по ширине и удалить дубликаты .

Примечание: это ограниченный образец. Реальный набор данных может содержать больше столбцов (до 60) с возможностью дублирования 20 идентификаторов, которые расположены в шахматном порядке и требуют консолидации.

Программное обеспечение, из которого я извлекаю данные, предоставляет это в качестве вывода. Я не могу передать это через программное обеспечение SQL из-за ограниченного доступа. Я знаю, SQL сделает это немного проще, но мне было интересно, можно ли это сделать в Excel.

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Отсканируйте лист и сравните каждую ячейку с ячейкой ниже и скопируйте снизу, если она пуста. Удалить строку ниже, если она имеет тот же идентификатор

Option Explicit

Sub consolidate()

    Const SHEET_NAME = "Sheet1"
    Const NO_OF_COLS = 30

    Dim wb As Workbook, ws As Worksheet
    Dim irow As Long, iLastRow As Long, c As Long, count As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets(SHEET_NAME)
    iLastRow = ws.Range("A" & Rows.count).End(xlUp).Row

    ' scan up sheet
    For irow = iLastRow - 1 To 2 Step -1

         ' if same id below
        If ws.Cells(irow + 1, 1) = ws.Cells(irow, 1) Then

            ' scan across
            For c = 1 To NO_OF_COLS
                ' if blank copy from below
                If Len(ws.Cells(irow, c)) = 0 Then
                   ws.Cells(irow, c) = ws.Cells(irow + 1, c)
                End If
            Next

            ws.Rows(irow + 1).Delete
            count = count + 1

        End If

    Next

    MsgBox iLastRow - 1 & " rows scanned" & vbCr & _
           count & " rows deleted from " & ws.Name, vbInformation

End Sub

0 голосов
/ 11 марта 2020

Если я правильно понимаю, вы могли бы сделать это с помощью функции сцепления в Excel, чтобы объединить все ячейки вместе в одну ячейку.

Я полагаю, это то, о чем вы спрашивали?

Это пример того, как использовать это:

=CONCAT(A1,"-",B1)

И в какую бы ячейку он не вводился, в качестве значения будет иметь ячейку «A1-B1» (со значениями в этих ячейках вместо имен ячеек).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...