Como copiar apenas as linhas de texto de uma coluna do Excel?

Como copiar apenas as linhas de texto de uma coluna do Excel?

Rotineiramente preciso extrair o texto de arquivos parecidos com este:

Captura de tela do arquivo no Excel

Idealmente, de duas maneiras:

  1. Apenas as linhas individuais de texto

    Ex:
    pronto, na verdade temos uma publicação lançada

    desses dados e estamos trabalhando em

    mais dados que foram apresentados recentemente em

  2. Em forma de parágrafo (juntando o texto de diferentes linhas em um único bloco de texto que posso editar no Word, Google Docs, etc)

    Ex:
    pronto, na verdade temos uma publicação com esses dados e estamos trabalhando em mais dados que foram apresentados recentemente em

Quando recebo os arquivos, tudo está na Coluna A. Há duas linhas de números que não preciso, seguidas por uma linha de texto que preciso e, em seguida, uma linha em branco, após a qual o padrão se repete por milhares de linhas.

Obviamente, fazer isso manualmente leva muito tempo, então qualquer ajuda seria muito apreciada.

Responder1

Parece que você precisa extrair os dados de cada terceira linha da coluna A, ou seja, A3, A7, A10 ....

Em primeiro lugar, escreva 3, 7 nas duas primeiras células da coluna B e arraste para baixo para produzir uma série como 3, 7, 10, 13 .....

Agora, escreva a fórmula =INDIRETO("A"&B1) em C1 que mostrará o texto da célula A3. Copie a fórmula para mostrar o texto de A7, A10 e assim por diante.

insira a descrição da imagem aqui

Para combinar todo o texto, você pode usar as funções CONCAT ou TEXTJOIN se tiver o Excel 2016. A vantagem do TEXTJOIN é que você pode usar delimitadores como espaço ou vírgula entre os textos. Você também pode ignorar células vazias. No exemplo a seguir, espaço foi usado como delimitador e True foi usado para ignorar células vazias.

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

Para versões anteriores, você pode usar a função CONCATENATE, mas deve escrever todas as referências de células uma por uma.

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

Responder2

Não acho que exista uma maneira fácil de fazer isso que não envolva escrever algum código. Provavelmente você pode fazer isso com VBA no Excel, mas não tenho muita experiência com isso.

Aqui está um exemplo de como você poderia fazer isso em Python. Este script percorrerá as células de uma determinada coluna e imprimirá o valor em um arquivo se não começar com um número.

Planilha Excel:

Exemplo de imagem de planilha do Excel

Saída:

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()

Responder3

Para simplificar a exclusão de linhas indesejadas no intervalo, é melhor classificá-las primeiro, para que por exemplo. todas as linhas vazias são agrupadas. É bastante simples usar a classificação interna de células, mas para manter a ordem inicial dos textos, são necessárias algumas etapas extras.

Vou me referir aos seus dados como estando dentro do alcance A1:A200como exemplo. Ajuste conforme necessário aos seus dados reais.

  1. Insira o dígito 1na célula B1e o dígito 2na célula B2. Selecione as células B1:B200e aplique a função fill, linearpara terminar com 1 a 200 na coluna B. Posteriormente, isso ajudará a retornar os textos em sua ordem inicial.

  2. Selecione o intervalo A1:B200e aplique a classificação. Agora você terá as linhas numéricas agrupadas, bem como as linhas do período de tempo, as linhas de texto e as linhas vazias. Assim é fácil selecionar e remover as linhas que você não deseja manter. Depois de excluir as linhas indesejadas, você deverá ter um intervalo, digamos, A1:B50com os textos e seus números de linha originais na coluna B.

  3. Para restabelecer a ordem correta dos textos, selecione o intervalo A1:B50e classifique-o na coluna B.

Para copiar os textos Wordpara processamento posterior, selecione, copie e cole em Word. Remova a formatação da tabela e concatene as linhas com pesquisar e substituir (pesquisar paragraphe substituir por space).

informação relacionada