Arrayformula 检查列是不是包含文本并拉出旁边的数字。谷歌表格

Posted

技术标签:

【中文标题】Arrayformula 检查列是不是包含文本并拉出旁边的数字。谷歌表格【英文标题】:Arrayformula to check if column contains text and pull the number next to it. Google SheetsArrayformula 检查列是否包含文本并拉出旁边的数字。谷歌表格 【发布时间】:2020-04-16 05:30:48 【问题描述】:

在这方面迫切需要一些帮助! 不知道如何命名这个问题...

样品表 - CLICK ME! :)

SupportingSheet!H1我有以下公式:

=ArrayFormula(if(G1:G<>"", IF(DASHBOARD!N2<>"", G1:G/DASHBOARD!$P$2-filter(DASHBOARD!O1:O100,REGEXMATCH(DASHBOARD!N1:N100,E1:E100)),G1:G/(DASHBOARD!$M$3)),))

我纠结的部分是:

G1:G/DASHBOARD!$P$2-filter(DASHBOARD!O1:O100,REGEXMATCH(DASHBOARD!N1:N100,E1:E100))

它需要将两个数字相除,然后再减去另一个数字。我似乎无法让这个公式得出正确的数字。 它需要检查E1:E100中的文字是否存在于DASHBOARD!N1:N100中,如果存在,则从DASHBOARD!O1:O100中提取号码。

例如SupportingSheet!E1中的文本可以在DASHBOARD!N2中找到,因此它需要从DASHBOARD!O2中提取号码。

SupportingSheet!J 具有公式需要生成的实际最终结果。

Regexmatch 看起来不像是一个 Arrayformula,我不知道该怎么做。

请注意,SupportingSheet!E1:E 中的文本并不总是相同的。通常它最后会有一个随机数的“空间”(长话短说......)。这就是为什么 Regexmatch 是一个完美的选择,直到我意识到它不起作用。

如果需要进一步说明,请告诉我。

下面是末尾随机空格(不可打印字符)的图像。

【问题讨论】:

【参考方案1】:

使用:

=ARRAYFORMULA(IF(G1:G="",,IF(DASHBOARD!N2<>"", 
 IFNA(G1:G/DASHBOARD!$P$2-VLOOKUP(E1:E1000, DASHBOARD!N1:O100, 2, 0), 
 G1:G/DASHBOARD!$M$3))))

【讨论】:

这个公式很好用,但是,还有另一个问题使这个公式有点不可用。 SupportingSheet!E 列中的文本末尾通常有随机数量的不可打印字符(即空格)。因此,查找并不总是匹配列 SupportingSheet!E 和 DASHBOARD!N 中的文本。有没有办法解决这个问题。我无法更改源数据以删除那些不可打印的字符。我添加了一张图片来说明我的意思。 @player0 试试:=ARRAYFORMULA(IF(G1:G="",,IF(DASHBOARD!N2&lt;&gt;"", IFNA(G1:G/DASHBOARD!$P$2-VLOOKUP(TRIM(E1:E1000), TRIM(DASHBOARD!N1:N100), DASHBOARD!O1:O100, 2, 0), G1:G/DASHBOARD!$M$3))))

以上是关于Arrayformula 检查列是不是包含文本并拉出旁边的数字。谷歌表格的主要内容,如果未能解决你的问题,请参考以下文章

在 Google 表格的过滤视图中排序时,ArrayFormula 列消失

在 Google 表格中使用 ARRAYFORMULA 有条件地基于辅助列数据进行 CONCAT

ArrayFormula 仅在整个列中迭代第一个值,需要所有符合条件的值

有效地检查文本列中是不是存在文本

Arrayformula - 从具有相同键 ID 的行中收集所有文本

如何检查表是不是包含特定列?