Перегруппировать данные в столбце
Есть ли способ автоматически упорядочить эти данные
В это
Использование 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.