regex 过滤来自不同工作表的数据,这些工作表位于匹配两个条件的不同列中

mzsu5hc0  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(71)

Objective我正尝试根据两个条件从电子表格中的不同工作表中检索数据:年= 2023年,月= 5月。我们的目标是在两个条件都满足时,有一个公式可以过滤数据并以一致的顺序(LINK、COMPANY、TITLE)显示结果。
问题我构造了一个公式,它对其中一个数据集(Monoti)正确工作,但对其他两个数据集(Rumala和Arbito)却没有像预期的那样工作。

  • 对于Monoti,它正确返回三个结果。
  • 对于Arbito,它返回一个结果,即使它应该返回none(没有行满足这两个条件)
  • 对于Rumala,它返回一个结果,但它不正确(如下图所示,数据应该是第二行,但它来自第一行)。

目标我正在寻找如何修改公式的指导,以便根据指定的条件从不同的工作表中正确过滤数据。我想检索相关数据,并确保在满足条件的每一行中以一致的顺序(LINK、COMPANY、TITLE)显示数据。如有任何建议或替代办法,将不胜感激。
数据结构每个工作表都有表示LINK、COMPANY、TITLE、Year和Month等的列。不同工作表中的列顺序可能不同,但所有工作表中都包含所需的数据(LINK、COMPANY、TITLE)。每个列都应该有自己的标题,但应该只有一个包含所有数据的表。
我的尝试:

https://docs.google.com/spreadsheets/d/185CaPyHmg_dScbTCateG2HlmsBd85WDJnjx-_u49hnA/edit?usp=sharing
我用过的公式是

=QUERY(Rumala!A2:N, "SELECT N, J, D WHERE L='2020' AND M='May'", 1)

但它产生了错误的结果。我也试过使用=SORT(FILTER)和REGEXMATCH,但没有任何成功。

=SORT(FILTER(Rumala!A2:N, (REGEXMATCH(Rumala!L2:L, "^2023$")) * (REGEXMATCH(Rumala!M2:M, "^May$"))), 1)

预期效果

  • 列A(公司)-分别从工作表Monoti、Arbito、Rumala中检索列I、M、N。
  • 列B(Post)-分别从表Monoti、Arbito、Rumala检索列B、I、J。
  • 列C(链接)-从所有工作表中检索列A。

栏目

anauzrmj

anauzrmj1#

这里有一个你可以测试的方法:

=let(Σ,{"Company","Title","Title_URL","Year","Month"},
     Λ,reduce(Σ,{"Monoti","Arbito","Rumala"},lambda(a,c,{a;choosecols(indirect("'"&c&"'!A2:Z"),index(xmatch(Σ,indirect("'"&c&"'!A1:Z1"),,-1)))})),
     {"Company","Post","Link";filter(choosecols(Λ,1,2,3),choosecols(Λ,1)<>"",choosecols(Λ,4)=2023,choosecols(Λ,5)="May")})

相关问题