【问题标题】:Replace Content of a cell based on a list of options in Google Sheets根据 Google 表格中的选项列表替换单元格的内容
【发布时间】:2020-08-30 08:42:10
【问题描述】:

多年来,我一直在使用一个很长的公式来帮助我实现我在这里要问的问题。

基本上,我每个月都会下载我的信用卡对帐单并使用一堆公式将其汇总,以便更好地导入我的会计软件。我的公式所做的是它读取每一行中的描述,并根据该行的内容重写该描述。

例如:在我的信用卡中,它可能会显示“Starbucks Main St.”,因此它会在列表中查找该信息,如果找到“Starbucks”,它将重写(在公式所在的单元格中)到“咖啡”。 所以,我所拥有的是:

Column B > Original Description from Credit Card Statement
Column F > Keyword to be found
Column G > New description

问题是我使用的 IF 搜索 公式必须与该列表的大小一样长。它有效,但我想知道它是否不能简化。另一个“问题”是我不能使用数组公式,所以将公式放在电子表格的顶部,它会扩展到整个语句。

这是一个例子: https://docs.google.com/spreadsheets/d/14255Sz28ItSMZ32EebIFiAHQFxtyCJakN5q3gYUB-N0/edit#gid=0

有什么想法吗?

【问题讨论】:

  • 在这里解决其他问题时,我找到了一个公式,至少可以使用 Regexmatch 在列表中查找关键字,并说明它的真假(匹配)。这是一个步骤,现在我需要使用该匹配来替换文本。我将其添加到 E 列的电子表格中。=ARRAYFORMULA(REGEXmatch(LOWER(B2:B); LOWER(TEXTJOIN("|"; 1; G2:G)))
  • 好吧,又向前迈了一步。我设法将数组公式与正则表达式匹配,并复制了我最初使用的公式。它仍然很长,但至少我可以在上面使用数组公式,并且不需要将公式复制到所有行。

标签: regex google-sheets google-sheets-formula array-formulas gs-vlookup


【解决方案1】:

尝试:

=ARRAYFORMULA(PROPER(IFNA(VLOOKUP(REGEXEXTRACT(PROPER(B2:B); 
 SORT(TEXTJOIN("|"; 1; PROPER(G2:G)); 1; 0)); G2:H; 2; 0); B2:B)))

【讨论】:

  • 太棒了! :) 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
相关资源
最近更新 更多