动态数组公式不能得到预期结果
同一个数组公式,excel中能得到正确的结果,wps中得不到预期结果,出错,想知道到底是触发了wps的哪个限制,这样我才好在以后的学习中进行规避。
公式
=-REDUCE(0,ROW($1:99),LAMBDA(x,y,IF(@x<0,x,SWITCH(MID(A2,y,1),"{",VSTACK(MAX(x)+1,x,MAX(x)+1),"}",IF(@x=B2,-y,DROP(x,1)),x))))
### 公式解析
1. **核心逻辑**:
- **层级计数器**:用 `x` 直接表示当前嵌套层级(初始为0)。
- **遇到 `{`**:层级+1。
- **遇到 `}`**:
- 若当前层级 `x` 等于目标层级 `B2`,返回 `-y`(负号标记找到结果)。
- 否则层级-1。
- **其他字符**:保持层级不变。
2. **提前终止**:
- 一旦找到目标闭合括号(`x`变为负值),后续遍历直接返回结果,提升效率。
3. **结果提取**:
- 通过 `-@` 将负值转为正数位置(如 `-7` → `7`)。
要求
1)A列字符串中的{和}总是成对出现的,且至少有一对。
2)B列数值为从左到右数第n个{,例如2表示从左到右数的第2个{。
3)一对{}总是完整的包括在另外一对{}中。例如{{}}中,第一个红色{对应的是最后一个红色},不能是倒数第2个}。
要求:
求与B列第n个{对应的}在字符串中的位置(从左到右数)。
例如:
A列字符串是:{{a,b}{b,{c,d}}}
B列数字是:3
C列返回:15