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

0

Eu rotineiramente preciso extrair o texto dos arquivos que se parecem com isso:

Idealmente, de duas maneiras:

  1. Apenas as linhas individuais de texto

    Ex:
    feito nós realmente temos uma publicação fora

    desses dados e estamos trabalhando em

    mais dados que foram recentemente apresentados em

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

    Ex:
    feito nós realmente temos uma publicação com esses dados e estamos trabalhando em mais dados que foram recentemente apresentados 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 para milhares de linhas.

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

    
por LyS 12.04.2018 / 01:41

3 respostas

1

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

Primeiro, por favor 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 baixo para mostrar o texto de A7, A10 e assim por diante.

Paracombinartodootexto,vocêpodeusarasfunçõesCONCATouTEXTJOINsetiveroExcel2016.ObenefíciodoTEXTJOINéquevocêpodeusardelimitadorcomoespaçoouvírgulaentreostextos.Vocêtambémpodeignorarascélulasvazias.Noexemploaseguir,oespaçofoiusadocomodelimitadoreTruefoiusadoparaignorarcélulasvazias.

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

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

=CONCATENATE(C1,C2,C3,C4,C5,C6,C7,C8).  
    
por 12.04.2018 / 08:39
1

Eu não acho que haja uma maneira fácil de fazer isso que não envolva escrever algum código. Você provavelmente pode fazê-lo com o VBA no Excel, mas não tenho muita experiência com isso.

Veja um exemplo de como você pode fazer isso em Python. Esse script passará pelas células de uma determinada coluna e imprimirá o valor em um arquivo se ele não começar com um número.

Folha do Excel:

Exemplo de imagem da 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()
    
por 12.04.2018 / 03:47
1

Para simplificar a exclusão de linhas indesejadas no intervalo, é melhor classificá-las primeiro, para que f.ex. 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ários alguns passos extras.

Vou me referir aos seus dados como estando no intervalo A1:A200 como exemplo. Ajuste conforme necessário para seus dados reais.

  1. Insira o dígito 1 na célula B1 e o dígito 2 na célula B2 . Selecione as células B1:B200 e aplique a função fill , linear para terminar com 1 a 200 na coluna B . Mais tarde isso ajudará a devolver os textos em sua ordem inicial.

  2. Selecione o intervalo A1:B200 e aplique a classificação. Agora você terá as linhas numéricas agrupadas, bem como as linhas 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 linhas indesejadas, você deve ter um intervalo, digamos A1:B50 com os textos e seus números de linhas originais na coluna B .

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

Para copiar os textos para Word para processamento posterior, selecione, copie e cole em Word . Remova a formatação da tabela e concatene as linhas com pesquisa e substituição (pesquisa paragraph e substituição por space ).

    
por 12.04.2018 / 09:15