1

У меня есть лист данных Excel, как это;

[EXCEL](http://i.imgur.com/mnvXLSQ.jpg)

Я хотел бы, чтобы столбец b был преобразован в 3 новых столбца, поэтому есть две строки, такие как URL1, Name, address, email и URL3, Name, address, email .

2 ответа2

2

Откройте Visual Basic (нажмите Alt+F11)
Вставьте модуль и вставьте следующий код в этот модуль

Sub Macro()
Dim i As Integer, j As Integer, k As Integer, LastRow As Integer
LastRow = Sheets(1).Range("A1").End(xlDown).Row
Sheets(2).Cells(1, 1).Value = Sheets(1).Cells(1, 1).Value
Sheets(2).Cells(1, 2).Value = Sheets(1).Cells(1, 2).Value
k = 1
j = 2
For i = 1 To LastRow
    If Sheets(1).Range("A" & i).Value = Sheets(1).Range("A" & (i + 1)).Value Then
        j = j + 1
        Sheets(2).Cells(k, j).Value = Sheets(1).Cells(i + 1, 2).Value
    Else
        k = k + 1
        Sheets(2).Cells(k, 1).Value = Sheets(1).Cells(i + 1, 1).Value
        Sheets(2).Cells(k, 2).Value = Sheets(1).Cells(i + 1, 2).Value
        j = 2
        End If
Next i
End Sub

Этот код проверяет сходство между ячейками в первом столбце, если содержимое ячейки совпадает, тогда значение в ячейке рядом с ним будет скопировано на другой лист. Если содержимое ячейки в первом столбце не совпадает, оно будет считаться следующей точкой данных.

Ввод на первом листе

Выход на второй лист

2

С данными в столбцах A и B, в C1 введите:

=OFFSET($A$1,3*(ROWS($1:1)-1),0)

и скопируйте вниз и в D1 введите:

=OFFSET($B$1,COLUMNS($A:A)-1+(ROW()-1)*3,0)

и скопируйте ОБА поперек и вниз:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .