Как скопировать только строки текста из столбца в Excel?

Как скопировать только строки текста из столбца в Excel?

Мне регулярно приходится извлекать текст из файлов, которые выглядят следующим образом:

Скриншот файла в Excel

В идеале двумя способами:

  1. Только отдельные строки текста

    Пример:
    сделано, у нас действительно есть публикация

    этих данных, и мы работаем над этим

    больше данных, которые были недавно представлены на

  2. В виде абзаца (объединение текста из разных строк в единый текстовый блок, который я могу редактировать в Word, Google Docs и т. д.)

    Пример:
    у нас уже есть публикация этих данных, и мы работаем над другими данными, которые были недавно представлены на

Когда я получаю файлы, все находится в столбце A. Есть две строки чисел, которые мне не нужны, за ними следует строка текста, который мне нужен, а затем пустая строка, после чего эта закономерность повторяется для тысяч строк.

Очевидно, что выполнение этой задачи вручную займет много времени, поэтому любая помощь будет принята с благодарностью.

решение1

Похоже, вам нужно извлечь данные из каждой третьей строки столбца A, т.е. A3, A7, A10....

Во-первых, напишите 3, 7 в первых двух ячейках столбца B и перетащите вниз, чтобы получить ряд, например, 3, 7, 10, 13 .....

Теперь напишите формулу =INDIRECT("A"&B1) в C1, которая покажет текст ячейки A3. Скопируйте формулу вниз, чтобы показать текст ячеек A7, A10 и так далее.

введите описание изображения здесь

Чтобы объединить весь текст, вы можете использовать функции CONCAT или TEXTJOIN, если у вас Excel 2016. Преимущество TEXTJOIN в том, что вы можете использовать разделители, такие как пробел или запятая между текстами. Вы также можете игнорировать пустые ячейки. В следующем примере пробел был использован в качестве разделителя, а True было использовано для игнорирования пустых ячеек.

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

В более ранних версиях можно использовать функцию СЦЕПИТЬ, но для этого придется писать все ссылки на ячейки одну за другой.

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

решение2

Я не думаю, что есть простой способ сделать это, не требующий написания кода. Вы, вероятно, можете сделать это с помощью VBA в Excel, но у меня нет большого опыта в этом.

Вот пример того, как это можно сделать на Python. Этот скрипт будет проходить по ячейкам в указанном столбце и выводить значение в файл, если оно не начинается с цифры.

Лист Excel:

Пример изображения листа Excel

Выход:

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

Код:

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

решение3

Для упрощения удаления нежелательных строк в диапазоне лучше всего сначала отсортировать их, например, чтобы все пустые строки были сгруппированы вместе. Использовать встроенную сортировку ячеек довольно просто, но для сохранения первоначального порядка текстов требуется несколько дополнительных шагов.

Я буду ссылаться на ваши данные как на находящиеся в диапазоне A1:A200в качестве примера. При необходимости отрегулируйте их в соответствии с вашими фактическими данными.

  1. Вставьте цифру 1в ячейку B1и цифру 2в ячейку B2. Выберите ячейки B1:B200и примените функцию fill, linearчтобы получить в столбце от 1 до 200 B. Позже это поможет вернуть тексты в их первоначальном порядке.

  2. Выберите диапазон A1:B200и примените сортировку. Теперь у вас будут сгруппированные числовые строки, а также строки временных рамок, текстовые строки и пустые строки. Таким образом, легко выбрать и удалить строки, которые вы не хотите сохранять. После удаления нежелательных строк у вас должен быть диапазон, скажем, A1:B50с текстами и их исходными номерами строк в столбце B.

  3. Чтобы восстановить правильный порядок текстов, выберите диапазон A1:B50и отсортируйте его по столбцу B.

Чтобы скопировать тексты в Wordдля дальнейшей обработки, выделите, скопируйте и вставьте в Word. Удалите форматирование таблицы и объедините строки с помощью поиска и замены (поиск paragraphи замена с помощью space).

Связанный контент