![Excel - 如何通过分隔符列表拆分字符串](https://linux22.com/image/1623557/Excel%20-%20%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%88%86%E9%9A%94%E7%AC%A6%E5%88%97%E8%A1%A8%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
答案1
我在回答时想到了一个解决方案(简单(叹气……))。我将其余部分留作进一步可行的示例,如果有人无法应用这个更简单的想法,它们可能会有所帮助:
=MID(A1, SEQUENCE(1,7), IF(SEQUENCE(1,7)<7, 1, LEN (A1)-6) )
它使用基本的“中间源 - 需要处理的字符数”方法,将最后一个字符限制为 7,因为您要提取 7 条数据。(否则,您会在 IK 列中得到“BB2”、“B2”和“2”,或者出现错误,具体取决于情况。)诀窍是,嗯,将 IN 保留为IF()-ing
最后一个子句,而不是将整个方法建立在从 an 开始IF()
并将所有内容放入其中的基础上!
当然,可以通过最后一个单元格(H1)进行修改,以增加其奇数。
“旧”答案:
如果您不介意使用旧式 CSE 公式,那么以下内容将重现您在问题中显示的结果:
{=IF( COLUMN()-1<7, MID(A1,COLUMN()-1,1), RIGHT(A1,LEN(A1)-6))}
Control-Shift-Enter
(当然,花括号是通过按 实现的。)
当前的溢出方法无法像我以前那样在裸机中工作IF()
。我没有找到一个函数来包装它,以便Spill
在不改变结果的情况下强制执行该功能。
直接使用Spill
技巧,我没能实现最后一个单元格“奇数出局”。
如果最后一个单元格不仅仅是超过六个字符的存储库,则需要进行相应的调整。您的问题中没有以任何方式解释这部分,因此...可以对COLUMN()
生成的值进行调整以适合您最终实际使用的精确列,或者保持原样,就像所示的那样。
或者更好的是,可以使用该Spill
功能填充前六列(B 到 G)的单元格,然后对 H 列使用不同的公式:
=MID(A1,SEQUENCE(1,6),1)
对于 BG 列,以及
=RIGHT(A1,LEN(A1)-6)
对于 H 列。
(它可以避免 CSE 方面的问题,CSE 将单元格与每行的公式锁定在一起,几乎与合并单元格一样。也许将来更容易维护,因为公式直接切中要点,而不是组合成一个执行两件不同事情的更大的公式。)
顺便说一句,MID()
with为我们带来了SEQUENCE()
一项很棒的新技术Spill
。不必像这里一样是单个字符,可以是任意数量的字符。