我有一个带有逗号分隔值的列,如下所示:
Thursday 9-10
Thursday 7-8
Thursday 8-9, Thursday 9-10
Thursday 8-9, Thursday 9-10, Thursday 7-8
...
(编辑后又添加了一个示例)
我想得到每个值,所以我决定使用split
,如下所示:
=if(iserror(find(",",A1)), A1, split(A1, ","))
并返回以下内容:
Thursday 9-10
Thursday 7-8
Tuesday 8-9 Saturday 9-10
Tuesday 8-9 Saturday 9-10 Friday 7-8
(编辑后又添加了一个示例)
在我看来,拆分函数不是以纯文本形式读取单元格(尽管我将其格式化为纯文本),而是作为日期,然后在此基础上拆分。
有人能向我解释一下为什么会发生这种事吗?我怎样才能让它不被当作约会对象呢?
我曾尝试将单元格与"" & A1
连接到一个字符串,但这也失败了。
返回前两个值是因为这些单元格中没有逗号。
发布于 2016-11-09 05:14:28
最简单的方法是使用regex重置函数,它在默认情况下也有效地将字符串保留为字符串,并且它非常动态,因此它是我最喜欢的函数之一:
=IFERROR(REGEXEXTRACT(A4,"("®EXREPLACE(A4,", ","), (")&")"),A4)
解释:
我首先通过动态构建自己的正则表达式,将,
(带空格的逗号)放置到相反的圆括号之间,这会部分地在我想要的文本片段周围创建捕获组。
它开始创建一个如下所示的字符串:
Thursday 8-9), (Thursday 9-10), (Thursday 7-8
要完成捕获组,我用开始和结束括号开始和结束字符串,如下所示:
="("®EXREPLACE(A4,", ","), (")&")")
它有效地创建了这样一个变量:
(Thursday 8-9), (Thursday 9-10), (Thursday 7-8)
默认情况下,捕获组会自动将每个组推送到它自己的单元格中,而且由于我不告诉它括号中必须包含什么,所以它只应该使用逗号和空格来知道组的结尾和开始位置,所以我用regex提取函数来结束它。
对于没有逗号可替换的情况,它会抛出一个错误,因此最简单的方法是用iferror
包装整个事件,以便在这些情况下只返回原始单元格:
发布于 2016-11-02 17:22:56
这是一个黑客,但请尝试:
=split(t("'"&A1&char(160)),",")
t
省去了准备单元格格式和非中断空间来强制文本(但不明显)的麻烦。
https://webapps.stackexchange.com/questions/99970
复制相似问题