使用Excel将linebreak替换为序列中另一个字符串的子字符串
我想用字符串2的子字符串替换字符串1上的换行符。替换顺序应基于字符串2上的换行符。 示例/想法应如下所示: 字符串1:使用Excel将linebreak替换为序列中另一个字符串的子字符串,excel,substitution,Excel,Substitution,我想用字符串2的子字符串替换字符串1上的换行符。替换顺序应基于字符串2上的换行符。 示例/想法应如下所示: 字符串1: date1|date2|date3|date4|date5| 字符串2: sentence1|sentence2|sentence3|sentence4|sentence5| 预期结果: date1sentence1date2sentence2date3sentence3date4sentence4date5sentence5 我知道我使用的公式不完整: =SUBSTIT
date1|date2|date3|date4|date5|
字符串2:
sentence1|sentence2|sentence3|sentence4|sentence5|
预期结果:
date1sentence1date2sentence2date3sentence3date4sentence4date5sentence5
我知道我使用的公式不完整:
=SUBSTITUTE(A1,MID(A1,6,1),"?")
提前感谢….如果您有权访问CONCAT,您可以使用此数组表单:
=CONCAT(TRIM(MID(SUBSTITUTE(A1,"|",REPT(" ",999)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,"|",""))))-1)*999+1,999))&TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A2)-LEN(SUBSTITUTE(A2,"|",""))))-1)*999+1,999)))
作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter进行确认
如果还可以访问动态数组公式,则可以使用:
=CONCAT(TRIM(MID(SUBSTITUTE(A1,"|",REPT(" ",999)),SEQUENCE(LEN(A2)-LEN(SUBSTITUTE(A2,"|","")),,1,999),999))&TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),SEQUENCE(LEN(A2)-LEN(SUBSTITUTE(A2,"|","")),,1,999),999)))
它不再需要CSE条目
如果每个字符串始终为5项,则可以使用替换项:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"|",TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),1,999)),1),"|",TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),999,999)),1),"|",TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),2000,999)),1),"|",TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),3000,999)),1),"|",TRIM(MID(SUBSTITUTE(A2,"|",REPT(" ",999)),4000,999)),1)
它要求每个项目使用一个嵌套的替换项。除非有固定的中断次数,否则替换项不会执行此操作。每一个换行符都需要一个替代品。你有TEXTJOIN吗?@ScottCraner抱歉,我不太清楚你的意思,因为我对Excel公式有点陌生。我没有使用TEXTJOIN。只要有效,任何公式都可以。日期的数量应与句子的数量相匹配,并用换行符分隔(w/c i用作标记以了解顺序)。这是从CRM导出的CSV文件。我只是想把日期和它对应的句子合并起来。谢谢。问题是,“总是有5个日期和句子吗?”如果可以变化,就不能单独使用替代。不,有时是3个日期和3个句子,或者8个日期和8个句子。它通常是相配的。这是我知道你的公式有效的实际屏幕截图,但我不知道是Excel版本还是我用错误的方式编辑了你的公式。这是我编辑过的版本:
=CONCATENATE(TRIM(MID)(替换(A1,MID(A1,23,1),REPT(“,999)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1),LEN(A1,MID(A1,23,1),)-LEN(替换(A1,MID(A1,23,1),))-1)*+1999)和TRIM(替换(B1,MID(A1,MID(A1,23,1),REPT(“,999)),(ROW($ZZ1:INDEX($ZZ,LEN
但是结果只是一个1行而不是串联
它应该是CONCAT
如果你没有CONCAT
,那么你需要vba来做这件事。非常感谢,你是救世主。请问我可以使用这个公式的最起码的Excel版本是什么?其他选择,比如谷歌表单?谢天谢地,阿加尼特似乎在谷歌工作,但最后少了一行句子。这是因为测试数据在字符串的末尾也显示了|
。如果情况并非如此,则需要在LEN(A1)-LEN(替换(A1,“|”,”)
之后添加+1