1 votos

Extraer todos los números de una sola hoja de Excel

Dada una hoja de Excel con una mezcla de números y texto.

ES:

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

¿Cómo puedo escanear toda la hoja y extraer sólo los números de una sola columna?

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

Prefiero no usar VBA, el orden no es importante.

1voto

Dave Puntos 18513

Depende del caso de uso, pero la lógica que yo sugeriría (sin usar VBa) es copiar cada columna en una sola columna larga, y luego simplemente ordenar alfabéticamente.

Así que empieza como

enter image description here

Copiar y pegar en una sola columna

enter image description here

Añada una nueva fila y un título de encabezamiento haciendo clic en Filter (en el Data cinta, Sort and Filter tabulador)

Ordenar de menor a mayor

enter image description here

Simplemente borre las otras filas.

Si copiar todas las columnas en una sola columna requiere demasiado tiempo, consulte 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

¿Cómo puedo añadir VBA en MS Office?

1voto

Bandersnatch Puntos 139

Puedes hacerlo con una fórmula:

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

Aquí se enumeran los números de grande a pequeño:

enter image description here

Esta es una fórmula de matriz, por lo que debe introducirse con CTRL-Shift Enter, en lugar de sólo Enter. Si se introduce correctamente, Excel rodeará la fórmula con corchetes {} en la barra de fórmulas.

Para escanear toda la hoja, cambie los rangos en la sentencia IF a $1:$1048576. Pero tendrá que excluir la columna en la que está listando los números. Así que podría listar en la Columna A y usar B$1:XFD$1048576. (Esto es para Excel después de 2007).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X