如何仅复制 Excel 中某一列的文本行?

如何仅复制 Excel 中某一列的文本行?

我经常需要从如下文件中提取文本:

Excel 文件的屏幕截图

理想情况下,有两种方式:

  1. 仅显示个别文本行

    例如:
    我们实际上已经出版了一份出版物

    这些数据,我们正在努力

    最近在

  2. 以段落形式(将不同行的文本合并为一个文本块,我可以在 Word、Google Docs 等中编辑)

    例如:
    我们实际上已经根据这些数据发表了一篇文章,我们正在研究最近在

当我收到文件时,所有内容都在 A 列中。有两行我不需要的数字,后面是一行我需要的文本,然后是一个空白行,之后该模式重复了数千行。

显然,手动完成此操作需要很长时间,因此非常感谢任何帮助。

答案1

看来您需要提取 A 列每三行的数据,即 A3,A7,A10 ...。

首先,请在 B 列的前两个单元格中写入 3、7,然后向下拖动以生成一系列数字,如 3、7、10、13.....

现在,在 C1 中写入公式 =INDIRECT("A"&B1),它将显示 A3 单元格的文本。将公式向下复制以显示 A7、A10 等的文本。

在此处输入图片描述

要合并所有文本,如果您使用的是 Excel 2016,则可以使用 CONCAT 或 TEXTJOIN 函数。TEXTJOIN 的好处是您可以在文本之间使用空格或逗号等分隔符。您还可以忽略空单元格。在下面的示例中,空格已用作分隔符,并且已使用 True 来忽略空单元格。

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

对于早期版本,您可以使用 CONCATENATE 函数,但必须逐个写入所有单元格引用。

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

答案2

我认为没有一种简单的方法可以做到这一点,而不需要编写一些代码。您可能可以使用 Excel 中的 VBA 来完成此操作,但我对此没有太多经验。

以下是使用 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数字。选择单元格并应用,函数,最终在列中得到 1 到 200 的数字。稍后这将有助于按其初始顺序返回文本。2B2B1:B200filllinearB

  2. 选择范围A1:B200并应用排序。现在您将拥有分组在一起的数字行以及时间范围行、文本行和空行。因此,您可以轻松选择和删除不想保留的行。删除不需要的行后,您应该有一个范围,例如A1:B50列中的文本及其原始行号B

  3. 要恢复文本的正确顺序,请选择范围A1:B50并按列进行排序B

要将文本复制到Word进行进一步处理,请选择、复制并粘贴到Word。删除表格格式并使用搜索和替换连接行(搜索paragraph并替换为space)。

相关内容