Дается лист Excel со смешанным числом и текстом.
ES:
123|text|11 ----------- hi | 75| 1
Как я могу отсканировать весь лист и извлечь только числа в одном столбце?
123| ---- 75| ---- 11| ---- 1|
Я предпочитаю не использовать VBA, порядок не важен.
Дается лист Excel со смешанным числом и текстом.
ES:
123|text|11 ----------- hi | 75| 1
Как я могу отсканировать весь лист и извлечь только числа в одном столбце?
123| ---- 75| ---- 11| ---- 1|
Я предпочитаю не использовать VBA, порядок не важен.
Это зависит от варианта использования, но я бы предложил (без использования VBa) копировать каждый столбец в один длинный столбец, а затем просто сортировать по алфавиту!
Так что начинается как
Скопируйте и вставьте в один столбец
Чтобы добавить новую строку и заголовок заголовка, нажмите « Filter
(на ленте « Data
, на вкладке « Sort and Filter
»).
Сортировать от наименьшего к наибольшему
Просто удалите другие строки!
Если копирование всех столбцов в один столбец занимает слишком много времени, см. Https://stackoverflow.com/questions/4480227/how-to-consolidate-data-from-multiple-excel-columns-all-into-one-column
Sub MakeOneColumn()
Dim vaCells As Variant
Dim vOutput() As Variant
Dim i As Long, j As Long
Dim lRow As Long
If TypeName(Selection) = "Range" Then
If Selection.Count > 1 Then
If Selection.Count <= Selection.Parent.Rows.Count Then
vaCells = Selection.Value
ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)
For j = LBound(vaCells, 2) To UBound(vaCells, 2)
For i = LBound(vaCells, 1) To UBound(vaCells, 1)
If Len(vaCells(i, j)) > 0 Then
lRow = lRow + 1
vOutput(lRow, 1) = vaCells(i, j)
End If
Next i
Next j
Selection.ClearContents
Selection.Cells(1).Resize(lRow).Value = vOutput
End If
End If
End If
End Sub
Вы можете сделать это с помощью формулы:
=IFERROR(LARGE(IF(ISNUMBER(A$1:C$3),A$1:C$3),ROW()),"")
Это перечисляет числа от большого до маленького:
Это формула массива, поэтому ее нужно вводить с помощью CTRL-Shift Enter, а не просто Enter. Если введено правильно, Excel окружит формулу фигурными скобками {} в строке формул.
Чтобы отсканировать весь лист, измените диапазоны в операторе IF на $ 1:$ 1048576. Но вам нужно исключить столбец, в котором вы перечисляете числа. Таким образом, вы можете перечислить в столбце A и использовать B $ 1:XFD $ 1048576. (Это для Excel после 2007 года).