Перегруппировать данные в столбце

Есть ли способ автоматически упорядочить эти данные

В это

Использование Excel/ Google листов / и т. Д. По сути, у меня есть огромный список файлов (второй столбец), которые мне нужно сопоставить с соответствующей папкой (идентификатор первого столбца).

Что мне нужно, так это скопировать данные столбца A вниз, но только в пустые ячейки, расположенные ниже, а затем сделать это снова для нового идентификатора папки и так далее.

2 ответа

Решение

У меня есть макрос, который подсказывает пользователю, в какой столбец копировать данные. См. Ниже (обратите внимание, что вам может понадобиться настроить при необходимости):

Sub GEN_USE_Copy_Data_Down()
Dim screenRefresh$, runAgain$
Dim lastRow&, newLastRow&
Dim c       As Range
Dim LastRowCounter$
Dim columnArray() As String

screenRefresh = MsgBox("Turn OFF screen updating while macro runs?", vbYesNo)
If screenRefresh = vbYes Then
    Application.ScreenUpdating = False
Else
    Application.ScreenUpdating = True
End If


Dim EffectiveDateCol As Integer
LastRowCounter = InputBox("What column has the most data (this info will be used to find the last used row")

CopyAgain:
With ActiveSheet
    lastRow = .UsedRange.Rows.Count
End With


' THIS WILL ASK THE USER TO SELECT THE COLUMN TO COPY DATA DOWN
MsgBox ("Now, you will choose a column, and that column's data will be pasted in the range" & vbCrLf & "below the current cell, to the next full cell")
Dim Column2Copy As String
Column2Copy = InputBox("What columns (A,B,C, etc.) would you like to copy the data of?  Use SPACES, to separate columns")
columnArray() = Split(Column2Copy)

Dim startCell As Range


For i = LBound(columnArray) To UBound(columnArray)
    Debug.Print i
    Column2Copy = columnArray(i)

    Set startCell = Cells(1, Column2Copy).End(xlDown)
    Do While startCell.row < lastRow
        If startCell.End(xlDown).Offset(-1, 0).row > lastRow Then
            newLastRow = lastRow
        Else
            newLastRow = startCell.End(xlDown).Offset(-1, 0).row
        End If
        Set CopyFrom = startCell
        Range(Cells(startCell.row, Column2Copy), Cells(newLastRow, Column2Copy)).Value = CopyFrom.Value
        Set startCell = startCell.End(xlDown)
    Loop
Next i

If screenRefresh = vbYes Then
    Application.ScreenUpdating = True
Else
    Application.ScreenUpdating = True
End If


End Sub

Я написал это некоторое время назад, поэтому, возможно, удастся удалить / объединить строки, но это должно сработать (при условии, что вы пытаетесь просто скопировать данные в столбец A).

В Excel выберите левый столбец, HOME > Редактирование, Найти и выбрать, Перейти к специальному..., отметьте Пробелы (только), OK, затем выберите одну из выбранных ячеек, =, Вверх, Ctl+Enter.

Другие вопросы по тегам