![Excel:按分隔符拆分字符串并确定结果数组的长度](https://linux22.com/image/1590253/Excel%EF%BC%9A%E6%8C%89%E5%88%86%E9%9A%94%E7%AC%A6%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E7%A1%AE%E5%AE%9A%E7%BB%93%E6%9E%9C%E6%95%B0%E7%BB%84%E7%9A%84%E9%95%BF%E5%BA%A6.png)
我有一张 Excel 表,其中包含如下列:
| 143 | 423 | | | 423;234 | 134;234;143 | =SOME_FORMULA() |
数据具有以下特点:
- 虽然是数字,但它们应该被视为字符串,因为它们是 ID。列的格式为文本。
- 任何列都可以包含零个或多个 ID 号。如果一列中有多个 ID 号,则它们将以分号分隔。
- 标记的单元格
SOME_FORMULA()
应包含该行中所有 ID 号的计数。在此示例中,单元格应显示7
。
在搜索如何按分隔符拆分字符串时,我发现的所有答案都依赖于与我的数据不匹配的假设,即他们假设字符串中元素的数量是预先知道的,和/或他们尝试将文本分成固定数量的列(这再次假设元素的数量是预先知道的)。
我怎样才能计算出我所寻找的东西?
答案1
答案2
我不太确定您最终是否在寻找 SOME_FORMULA() 或在分隔符上拆分字符串的方法。
不过,我为 SOME_FORMULA() 提出了一个可能的解决方案
假设
- 您的数据格式为文本
列数是固定的。最右边的其余单元格可以留空
在此示例中,示例数据位于单元格 C3:J12 中
现在在 K3 中输入以下公式,然后在公式栏中按 CTRL + SHIFT + ENTER 创建一个数组公式。该公式现在应括在花括号中,以表明它是一个数组公式。
将其向下拖动至目标行。
=SUM(IF(LEN(C3:J3)-LEN(SUBSTITUTE(C3:J3,";",""))>=1,IF(C3:J3=";",0,IF(RIGHT(C3:J3,1)=";",LEN(C3:J3)-LEN(SUBSTITUTE(C3:J3,";","")),LEN(C3:J3)-LEN(SUBSTITUTE(C3:J3,";",""))+1)),IF(ISBLANK(C3:J3),0,1)))
此解决方案中的一些验证和限制
- 即使你在单元格的最后一个条目后添加了一个额外的 ; 它也会被忽略
- 空白视为 0
- 多个 ; 一个接一个将导致验证失败,并且 ID 的数量将在每次后续重复时增加一 ; 因此请避免使用以下数据
234;567;;
- 非空白单元格但仅包含空格仍将计为 1