我正在尝试根据条件从单元格中提取一系列电子邮件。
实际上,我有一个单元格,其文本如下所示:
emailAddress: {u'name': u'STAFF', u'address': u'[email protected]'}
status: {u'response': u'none', u'time': u'1601-01-01T00:00:00Z'}
type: required
emailAddress: {u'name': u'First1 Last1', u'address': u'[email protected]'}
status: {u'response': u'accepted', u'time': u'2019-07-31T14:55:01.9766714Z'}
type: optional
emailAddress: {u'name': u'First3 Last3', u'address': [email protected]'}
status: {u'response': u'accepted', u'time': u'2019-07-31T14:57:47.766Z'}
type: optional
最终,我希望在一个单元格中用逗号分隔开来,其中包含所有接受日历邀请的人员的电子邮件地址(即 u'response':u'accepted')
我通过以下几个步骤完成了此操作:
=SPLIT(A2,"emailAddress",FALSE,TRUE)
=> 将上面的文本分成 3 个单元格=IF(REGEXMATCH(B2,"accepted"),REGEXEXTRACT(B2,"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}"),"")
=> 如果单元格包含单词“accepted”,则提取电子邮件地址=TEXTJOIN(",",TRUE,B3:Z3)
=> 这会将所有电子邮件地址连接到一个单元格中
我想在一个单元格中完成所有这些操作,但我不知道该怎么做。显而易见的解决方案是将第二步应用于一个范围而不是特定的单元格,但我不知道该怎么做。非常感谢您的帮助!
这是带有输入单元格以及我使用的公式的表格:https://docs.google.com/spreadsheets/d/1yi-FYmTIBoDyPrU1SbtdbtNMWizyR9cKTgJr9CuabxM/edit?usp=sharing
答案1
我找到了这个问题的解决方案,结果比想象的要简单。我所要做的就是将所有 3 个公式合并为 1 个,并将其全部包含在“arrayformula”下。实际上它看起来像这样:
ArrayFormula(TEXTJOIN(",",TRUE,IF(REGEXMATCH(SPLIT(D2,"emailAddress",FALSE,TRUE),"accepted"),Regexextract(SPLIT(D2,"emailAddress",FALSE,TRUE),"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}"),"")))