【问题标题】:Google Sheets: extracting numbers from multiple cells that contain text and numbers for one column of data?Google表格:从包含一列数据的文本和数字的多个单元格中提取数字?
【发布时间】:2021-05-08 05:53:35
【问题描述】:

我正在使用 Google 表格。我有几百个包含文本和数字的单元格。这些单元格包含员工姓名和他们的 ID#。我想提取 ID#s 并将它们编译成一个列表。我有下面的公式可以让我完成任务,但仅限于一个单元格,而不是一系列单元格(即使我选择了一个范围并将其添加到公式中):

=transpose(split(regexreplace(regexreplace(A1,"\s\d+\s"," "),"[^\d\.]"," ")," "))

例如,单元格 A1 将包含“Tammy - 123456,Bob - 654987,Mike - 321456”并重复类似的操作,直到您到达单元格 DT75“Marcus - 35768,Bruce - 95126,Lisa - 789123”之类的内容。工作表中的某些单元格是空白的。上面的公式将在他们自己的单元格中为我提供来自 A1 的 ID#:

123456

654987

321456

我想获取工作表中所有 ID# 的一列,然后我可以将其复制并粘贴到一个完全不同的专有数据库中。我是不是走错路了?脚本是更好的角度吗?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    尝试:

    =INDEX(FLATTEN(SPLIT(QUERY(REGEXREPLACE(A1:A, "[A-Za-z-,]+", ),,9^9), " ")))
    

    对于多列:

    =INDEX(FLATTEN(SPLIT(FLATTEN(QUERY(REGEXREPLACE(A1:C, "[A-Za-z-,]+", ),,9^9)), " ")))
    

    【讨论】:

    • 成功了!谢谢你。我必须通过公式来确保我了解所有这些命令是如何提取数据的。
    • @RQS2020 REGEXREPLACE 将删除大写和小写字符或任何 - 和逗号 [A-Za-z-,]+,因此您会忽略数字和空格。 QUERY 然后将整个 A1:A 范围连接到单个单元格中。 SPLIT 会将其拆分为每个空白空间,而 FLATTEN 会将其转置为一列。需要 INDEX 来迭代 A1:A 范围上的正则表达式。 9^9 表示“将所有行粉碎成一个单元格”
    【解决方案2】:

    由于您希望原始范围为多列,您可以尝试对player0's formula 稍作修改,如下所示:

    • 使用CONCATENATE 将所有数据放在一个字符串中。
    • REGEXREPLACE 从字符串中删除除数字之外的所有内容。
    • SPLIT 将您的字符串分成几个单元格,空格作为分隔符。
    • FLATTEN 将所有结果值放在一个列中。
    =FLATTEN(SPLIT(REGEXREPLACE(CONCATENATE(A:DT), "[A-Za-z-,]+", )," "))
    

    【讨论】:

    • 这也有效。谢谢!我更熟悉这些命令。感谢您对公式的演练。
    • @RQS2020 只是提醒 CONCATENATE 输入有限
    猜你喜欢
    • 2022-12-04
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多