Lio*_*owe 7 excel excel-formula office365
在 Excel 中,我可以轻松地将 aLAMBDA作为第二个参数传递给MAP,如预期的那样:
=MAP({1, 2, 3}, LAMBDA(x, x = 1))\n// { TRUE, FALSE, FALSE }\nRun Code Online (Sandbox Code Playgroud)\n如果我尝试对 执行相同的操作FILTER,则会收到错误:
=FILTER({1, 2, 3}, LAMBDA(x, x = 1))\n// #CALC!\nRun Code Online (Sandbox Code Playgroud)\n我有几个相关问题:
\nMAP并且FILTER任何理智的人都会期望?如果我听起来很咸,那是因为我很咸
\n是的,你可以,但你必须知道 lambda 辅助函数MAP()和实际LAMBDA()函数之间的区别。
语法MAP():
=MAP(array1, lambda_or_array<#>)\nRun Code Online (Sandbox Code Playgroud)\nMap 是一个内置的 lambda 帮助器,由于唯一的功能是在迭代计算中应用 lambda,因此您可以应用=MAP({1,2,3},LAMBDA(x,x=1)).
LAMBDA()根据官方文档在单元格中创建的语法:
=LAMBDA([parameter1, parameter2, ...],calculation)(function call)\nRun Code Online (Sandbox Code Playgroud)\n这里的区别在于,对于实际的 lambda,您仍然应该创建自己的自定义函数。MAP()为此,语法有点不同,与等内置函数形成对比REDUCE();您仍然需要以某种方式包含输入。这是通过函数末尾的一组额外括号来完成的:=LAMBDA(x,x=1)({1,2,3}).\xc2\xb9
现在我们知道,使用内置 lambda-helpers,输入是函数语法中的实际参数,我们可以将两者应用到您的FILTER():
=FILTER({1,2,3},MAP({1,2,3},LAMBDA(x,x=1)))\nRun Code Online (Sandbox Code Playgroud)\n或者\xc2\xb2:
\n=FILTER({1,2,3},LAMBDA(x,x=1)({1,2,3})\nRun Code Online (Sandbox Code Playgroud)\n看看这个MAP()功能如何让生活变得更轻松一些?人们还可以LAMBDA()根据下面的脚注创建自己的自定义函数并调用它:
=FILTER({1,2,3},TEST({1,2,3})\nRun Code Online (Sandbox Code Playgroud)\n\xc2\xb9人们通常会在名称管理器中创建一个自定义的名为 lamda 函数。在这种情况下,您不需要在末尾包含源代码,而是调用包含第一个参数中的输入的函数。例如:调用的自定义命名函数TEST()引用了调用时=LAMBDA(x,x=1)会输出的内容。{TRUE,FALSE,FALSE}=TEST({1,2,3})
\xc2\xb2如果您确实想使用数组文字,请考虑合并LET()以便能够首先将数组放入命名变量中。例如:=LET(x,{1,2,3},FILTER(x,LAMBDA(y,y=1)(x))).
要回答你的第三个问题:你可以使用这个公式:
=LAMBDA(x,FILTER(x,x=2))({1,2,3})
Run Code Online (Sandbox Code Playgroud)
或者 - 如果您想保留列:
=BYCOL({1,2,3},LAMBDA(x,FILTER(x,x=2,"")))
Run Code Online (Sandbox Code Playgroud)
对第一个版本的增强以传递过滤器值:
=LAMBDA(arrValues, filterBy, FILTER(arrValues,arrValues = filterBy))({1,2,3};3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |