Excel中基于LAMBDA提取数组每行首个0的列位置方案问询
解决方案:用LAMBDA+BYROW提取每行首个0的列位置
直接使用以下封装好的LAMBDA函数即可满足需求:
=LAMBDA(arr, BYROW(arr, LAMBDA(row, MATCH(0, row, 0))))
工作原理
BYROW(arr, ...):遍历输入的二维数组arr的每一行,将每行数据传递给内部的LAMBDA函数处理,最终返回由每行结果组成的N行1列数组,完全避开了ROW()函数和辅助行列的使用。MATCH(0, row, 0):在当前行row中精确匹配第一个出现的0,返回其对应的列位置(范围1-M),第三个参数0确保匹配逻辑是从左到右查找第一个符合条件的值。
示例验证
- 输入数组
[[2,0],[4,0],[10,0],[0,0]],函数返回结果:[2,2,2,1] - 输入数组
[[250,250,0],[500,0,0],[0,0,0]],函数返回结果:[3,2,1]
使用提示
将这个LAMBDA函数命名(比如FIRST_ZERO_COL)后,直接在Excel中调用=FIRST_ZERO_COL(你的二维数组)即可,比如你用MOD生成的数组可以直接作为参数传入。
内容的提问来源于stack exchange,提问作者Tigregalis
相关产品推荐
相关产品推荐

