1

Дается лист Excel со смешанным числом и текстом.

ES:

123|text|11
-----------
hi |  75| 1

Как я могу отсканировать весь лист и извлечь только числа в одном столбце?

123|
----
 75|
----
 11|
----
  1|

Я предпочитаю не использовать VBA, порядок не важен.

2 ответа2

1

Это зависит от варианта использования, но я бы предложил (без использования 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

Как добавить VBA в MS Office?

1

Вы можете сделать это с помощью формулы:

 =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 года).

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