Extrai todos os números da folha de excel única

1

Dada uma planilha de excel com número e texto misturados.

ES:

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

Como posso escanear toda a planilha e extrair apenas os números em uma única coluna?

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

Eu prefiro não usar o VBA, a ordem não é importante.

    
por Giulio Caccin 21.08.2017 / 14:52

2 respostas

1

Você pode fazer isso com uma fórmula:

 =IFERROR(LARGE(IF(ISNUMBER(A$1:C$3),A$1:C$3),ROW()),"")

Isso lista os números de grandes a pequenos:

Esta é uma fórmula de matriz, portanto, ela deve ser digitada com CTRL-Shift Enter, em vez de apenas Enter. Se inserido corretamente, o Excel colocará a fórmula entre chaves {} na barra de fórmulas.

Para digitalizar toda a planilha, altere os intervalos na instrução IF para $ 1: $ 1048576. Mas você precisará excluir a coluna na qual você está listando os números. Assim, você pode listar na Coluna A e usar B $ 1: XFD $ 1048576. (Isto é para o Excel depois de 2007).

    
por 21.08.2017 / 20:49
1

Depende do caso de uso aqui, mas a lógica que eu sugiro é que (sem usar o VBa) é copiar cada coluna em uma única coluna longa, então simplesmente ordenar alfabeticamente!

Então começa como

Copieecoleemumaúnicacoluna

Adicioneumanovalinhaeumtítulodetítulo,cliqueemFilter(naguiaDataribbon,SortandFilter)

Classifiquedemenoramaior

Bastaexcluirasoutraslinhas!

Seacópiadetodasascolunasemumaúnicacolunaexigirmuitotempo,consulte link

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

Como eu adiciono o VBA no MS Office?

    
por 21.08.2017 / 15:07