如何向需单个参数的命名函数传递单元格区域?
解决自定义函数接收整行范围的问题
不用逐个输入FOO(A1,A2,...,A30),只要修改你的自定义函数定义,让它能接收一个数组(整行范围)作为参数,再从数组里拆分出各个属性值即可。
具体修改步骤
假设你用的是支持LAMBDA和LET函数的Excel版本(如365),按下面的方式重新定义FOO:
=LAMBDA(row, LET( cost, INDEX(row, 1), speed, INDEX(row, 2), param3, INDEX(row, 3), param4, INDEX(row, 4), param5, INDEX(row, 5), // 依次将30个参数用INDEX从row数组提取,并用原命名参数名赋值 // ... 省略中间25个参数的定义 ... param30, INDEX(row, 30), // 这里写你的逻辑,比如当前的简单判断: cost=1 ) )
调用方式
定义完成后,直接用=FOO(A1:A30)就能调用。函数会自动把A1到A30的范围作为数组传入,通过INDEX提取每个位置的值对应到原命名参数,逻辑部分即可正常运行。
补充说明
- 如果你用的是Google Sheets等其他表格工具,逻辑类似:将函数改为接收范围参数,用
INDEX或对应工具的提取函数拆分出每个位置的值,再赋值给命名参数。 - 后续添加复杂逻辑时,直接修改
LET的最后逻辑部分即可,无需调整参数传入方式。
内容的提问来源于stack exchange,提问作者mannerpots
相关产品推荐
相关产品推荐

