Wie kopiere ich in Excel nur die Textzeilen aus einer Spalte?

Wie kopiere ich in Excel nur die Textzeilen aus einer Spalte?

Ich muss regelmäßig Text aus Dateien extrahieren, die so aussehen:

Screenshot der Datei in Excel

Idealerweise auf zwei Arten:

  1. Nur die einzelnen Textzeilen

    Beispiel:
    fertig, wir haben tatsächlich eine Veröffentlichung herausgebracht

    dieser Daten und wir arbeiten daran,

    weitere Daten, die kürzlich vorgestellt wurden bei

  2. In Absatzform (Text aus verschiedenen Zeilen zu einem einzigen Textblock zusammenfügen, den ich in Word, Google Docs usw. bearbeiten kann)

    Beispiel:
    fertig, wir haben tatsächlich eine Veröffentlichung aus diesen Daten und wir arbeiten an weiteren Daten, die kürzlich vorgestellt wurden bei

Wenn ich die Dateien erhalte, steht alles in Spalte A. Es gibt zwei Zeilen mit Zahlen, die ich nicht brauche, gefolgt von einer Zeile mit Text, den ich brauche, und dann einer leeren Zeile, nach der sich das Muster für Tausende von Zeilen wiederholt.

Es ist klar, dass dies manuell sehr zeitaufwändig ist, daher wäre ich für jede Hilfe sehr dankbar.

Antwort1

Es scheint, dass Sie die Daten aus jeder dritten Zeile der Spalte A extrahieren müssen, also A3, A7, A10 …

Schreiben Sie zunächst 3, 7 in die ersten beiden Zellen der Spalte B und ziehen Sie nach unten, um eine Reihe wie 3, 7, 10, 13 … zu erstellen.

Schreiben Sie nun die Formel =INDIREKT("A"&B1) in Zelle C1, um den Text der Zelle A3 anzuzeigen. Kopieren Sie die Formel nach unten, um den Text von Zelle A7, Zelle A10 usw. anzuzeigen.

Bildbeschreibung hier eingeben

Um den gesamten Text zu kombinieren, können Sie die Funktionen CONCAT oder TEXTJOIN verwenden, wenn Sie Excel 2016 haben. Der Vorteil von TEXTJOIN besteht darin, dass Sie Trennzeichen wie Leerzeichen oder Kommas zwischen den Texten verwenden können. Sie können auch leere Zellen ignorieren. Im folgenden Beispiel wurde ein Leerzeichen als Trennzeichen verwendet und True wurde verwendet, um leere Zellen zu ignorieren.

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

Bei früheren Versionen können Sie die Funktion CONCATENATE verwenden, müssen jedoch alle Zellreferenzen einzeln schreiben.

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

Antwort2

Ich glaube nicht, dass es dafür eine einfache Möglichkeit gibt, ohne Code schreiben zu müssen. Sie können es wahrscheinlich mit VBA in Excel machen, aber ich habe damit nicht viel Erfahrung.

Hier ist ein Beispiel, wie Sie dies in Python tun können. Dieses Skript durchsucht die Zellen in einer bestimmten Spalte und druckt den Wert in eine Datei, wenn er nicht mit einer Zahl beginnt.

Excel-Tabelle:

Beispielbild für eine Excel-Tabelle

Ausgabe:

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

Code:

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

Antwort3

Um das Löschen unerwünschter Zeilen im Bereich zu vereinfachen, ist es am besten, diese zuerst zu sortieren, sodass beispielsweise alle leeren Zeilen gruppiert werden. Es ist ziemlich einfach, die integrierte Sortierung von Zellen zu verwenden, aber um die ursprüngliche Reihenfolge der Texte beizubehalten, sind einige zusätzliche Schritte erforderlich.

Ich werde Ihre Daten als Beispiel als im Bereich liegend bezeichnen A1:A200. Passen Sie sie bei Bedarf an Ihre tatsächlichen Daten an.

  1. Geben Sie die Ziffer 1in Zelle B1und die Ziffer 2in Zelle ein B2. Wählen Sie die Zellen aus B1:B200und wenden Sie die Funktion an fill, linearum am Ende die Zahlen 1 bis 200 in Spalte zu erhalten B. Dies hilft später dabei, die Texte in ihrer ursprünglichen Reihenfolge zurückzugeben.

  2. Wählen Sie den Bereich aus A1:B200und wenden Sie die Sortierung an. Sie haben nun die numerischen Zeilen sowie die Zeitrahmenzeilen, Textzeilen und die leeren Zeilen gruppiert. So können Sie die Zeilen, die Sie nicht behalten möchten, einfach auswählen und entfernen. Nach dem Löschen unerwünschter Zeilen sollten Sie einen Bereich haben, beispielsweise A1:B50mit den Texten und ihren ursprünglichen Zeilennummern in der Spalte B.

  3. Um die richtige Reihenfolge der Texte wiederherzustellen, wählen Sie den Bereich aus A1:B50und sortieren Sie ihn nach der Spalte B.

Um die Texte Wordzur Weiterverarbeitung nach zu kopieren, markieren, kopieren und einfügen in Word. Entfernen Sie die Tabellenformatierung und verknüpfen Sie die Zeilen mit Suchen und Ersetzen (Suchen paragraphund Ersetzen mit space).

verwandte Informationen