¿Cómo copiar solo las filas de texto de una columna en Excel?

¿Cómo copiar solo las filas de texto de una columna en Excel?

Rutinariamente necesito extraer el texto de archivos que se ven así:

Captura de pantalla del archivo en Excel

Idealmente, de dos maneras:

  1. Solo las filas individuales de texto.

    Ej:
    hecho, realmente tenemos una publicación

    de estos datos y estamos trabajando en

    más datos que se presentaron recientemente en

  2. En forma de párrafo (uniendo el texto de diferentes filas en un solo bloque de texto que puedo editar en Word, Google Docs, etc.)

    Ej:
    en realidad tenemos una publicación a partir de estos datos y estamos trabajando en más datos que se presentaron recientemente en

Cuando recibo los archivos, todo está en la columna A. Hay dos filas de números que no necesito, seguidas de una fila de texto que sí necesito y luego una fila en blanco, después de la cual el patrón se repite durante miles de filas.

Obviamente, hacer esto manualmente lleva mucho tiempo, por lo que cualquier ayuda sería muy apreciada.

Respuesta1

Parece que necesita extraer los datos de cada tercera fila de la columna A, es decir, A3, A7, A10....

En primer lugar, escriba 3, 7 en las dos primeras celdas de la columna B y arrastre hacia abajo para producir una serie como 3, 7, 10, 13...

Ahora, escribe la fórmula =INDIRECTA("A"&B1) en C1 que mostrará el texto de la celda A3. Copie la fórmula para mostrar el texto de A7, A10, etc.

ingrese la descripción de la imagen aquí

Para combinar todo el texto, puede usar las funciones CONCAT o TEXTJOIN si tiene Excel 2016. El beneficio de TEXTJOIN es que puede usar delimitadores como espacios o comas entre los textos. También puedes ignorar las celdas vacías. En el siguiente ejemplo, se usó espacio como delimitador y True se usó para ignorar las celdas vacías.

=TEXTJOIN(" ",TRUE,C1:C11)

Para versiones anteriores, puede usar la función CONCATENAR pero debe escribir todas las referencias de celda una por una.

=CONCATENATE(C1,C2,C3,C4,C5,C6,C7,C8).  

Respuesta2

No creo que exista una manera fácil de hacer esto que no implique escribir código. Probablemente puedas hacerlo con VBA en Excel, pero no tengo mucha experiencia con eso.

Aquí tienes un ejemplo de cómo puedes hacerlo en Python. Este script revisará las celdas de una columna determinada e imprimirá el valor en un archivo si no comienza con un número.

Hoja de Excel:

Imagen de hoja de Excel de muestra

Producción:

Here's the first string and the second now a third

Código:

from openpyxl import load_workbook # package for working with xls files
import re # regex package

workbookName = 'test.xlsx'
sheetName = 'Sheet1'
column = 'A'
maxRow = 50
outputFile = 'excelOutput.txt'

# Open the workbook
wb = load_workbook(workbookName)
# Create a file to put the data into
fh = open(outputFile, 'w')

# Loop through all the rows
for kk in range(1,maxRow):
    # Grab the cell's value
    cellValue = wb[sheetName][column+str(kk)].value
    # If the cell isn't empty
    if cellValue != None:
        # If the cell doesn't start with a number
        if not re.search("\\d",str(cellValue)[0]):
            # Write the value from the cell into the text file
            fh.write(cellValue)
# Close the file
fh.close()

Respuesta3

Para simplificar la eliminación de filas no deseadas en el rango, es mejor ordenarlas primero, de modo que f.ex. todas las filas vacías se agrupan. Es bastante sencillo utilizar la clasificación de celdas incorporada, pero para mantener el orden inicial de los textos, se requieren algunos pasos adicionales.

Me referiré a sus datos como si estuvieran dentro del rango A1:A200como ejemplo. Ajuste según sea necesario a sus datos reales.

  1. Inserte el dígito 1en la celda B1y el dígito 2en la celda B2. Seleccione las celdas B1:B200y aplique la fillfunción linearpara terminar con 1 a 200 en la columna B. Posteriormente, esto ayudará a devolver los textos en su orden inicial.

  2. Seleccione el rango A1:B200y aplique la clasificación. Ahora tendrá las filas numéricas agrupadas, así como las filas de marco de tiempo, las filas de texto y las filas vacías. Por lo tanto, es fácil seleccionar y eliminar las filas que no desea conservar. Después de eliminar filas no deseadas, debería tener un rango, por ejemplo A1:B50con los textos y sus números de fila originales en la columna B.

  3. Para restablecer el orden correcto de los textos, seleccione el rango A1:B50y ordénelo por columna B.

Para copiar los textos Wordpara su posterior procesamiento, seleccione, copie y pegue en Word. Elimine el formato de la tabla y concatene las filas con buscar y reemplazar (buscar paragraphy reemplazar con space).

información relacionada