标签: excel-lambda

使用 LAMBDA 在 Excel 中生成所有排列

这是一个经常被问到和回答的问题:如何在 Excel 中生成所有排列

2011 2016 2017 2017 超级用户 2018 2021

现在到了2022 年,在它作为重复项关闭之前没有得到答案,这是不幸的,因为LAMBDA确实改变了这个问题的回答方式。

我很少有同样的需求,并且因不得不重新发明一个复杂的轮子而感到沮丧。因此,我将重新提出问题并在下面给出我自己的答案。我不会将任何提交标记为答案,但会邀请好的想法。我确信我自己的方法可以改进。

重申 2022 年问题

我正在尝试仅使用公式在 Excel 中创建循环。我想要实现的目标如下所述。假设我有 3 列作为输入: (i) 国家/地区;(ii) 变量;(iii) 年份。我想从这些输入进行扩展,然后为这些参数分配值。

输入:

国家 多变的
国标 国内生产总值 2015年
区域 2016年
CH 区域 2015年

输出:

国家 多变的
国标 国内生产总值 2015年
国标 国内生产总值 2016年
国标 区域 2015年
国标 区域 2016年
国内生产总值 2015年
国内生产总值 2016年
区域 2015年
区域 2016年

如何使用 Excel 有效地做到这一点?

扩展 2018 年问题

我有三列,每一列都有不同类型的主数据,如下所示:

在此输入图像描述

现在,我想要这三个单元格的所有可能组合 …

excel permutation excel-formula excel-lambda

13
推荐指数
2
解决办法
2729
查看次数

Excel 的 LAMBDA 具有“某种”复合函数

自从我得知 Excel 现在是图灵完备的,我就明白我现在可以仅使用公式对 Excel 进行“编程”,因此排除任何 VBA 的使用。

我不知道我的结论是对还是错。事实上,我并不介意。

然而,令我满意的是,我已经能够在公式中“编程”程序流的两个最基本的结构:1-分支控制流(使用 IF 函数在 Excel 中没有秘密)和 2-循环(FOR、WHILE , UNTIL 循环)。

让我更详细地解释一下我的发现。(备注:因为我使用的是西班牙语版本的 Excel 365,所以公式中的字段分隔符是分号(“;”)而不是逗号(“,”)。

A- FOR 循环中的累加器

FOR 循环中的累加器

B- 阶乘(使用产品)

阶乘

C-WHILE循环

WHILE循环

D-UNTIL 循环

直到循环

E- 内部/外部范围的概念

范围

现在,我提问的时间到了:

我想使用一个实际上是公式数组的公式

公式数组

我想对“元组”中的第一个数字使用累加器,而我想对元组中的第二个数字使用阶乘。所有这一切都使用一个 Excel 公式。我想我离成功已经不远了。

REDUCE 函数接受包含 2 个 LAMBDAS 而不是单个 LAMBDA 函数的 LET 函数。到这里为止,一切都很完美。然而,LET 函数似乎只返回一个“单个”函数而不是函数元组

函数元组(仍有待完成)

我可以返回(在图中)函数“x”或函数“y”,但不能返回元组(x,y)。

我尝试过使用 HSTACK(x,y),但它似乎不起作用。

我知道这是一个复杂的问题,但我已尽力让自己被理解。

有人可以给我任何关于如何解决我的问题的线索吗?

excel lambda excel-formula office365 excel-lambda

8
推荐指数
1
解决办法
603
查看次数

Excel - 我们如何使用 LAMBDA() 替换单元格中的多个字符或整个单词

冒着跑题的风险,我决定做一些问答,因为我对 MS 向 Excel365 引入的新功能感到非常兴奋;该LAMBDA()功能。如果普遍认为这是题外话,请告诉我,我可以删除问答。

LAMBDA()函数基本上是您在 Excel 中创建自己的函数的方式。然后,您可以继续在整个工作簿中调用此函数。但是关于它的绝对伟大的事情(恕我直言)是它能够在函数内调用自己,因此是递归的

SUBSTITUTE()如果必须交换多个字符,或者从某些字符甚至整个单词中清除字符串,我们都知道繁琐的嵌套函数。所以问题是:我们如何避免这种情况并利用LAMBDA()我们的优势?

excel lambda excel-formula office365 excel-lambda

6
推荐指数
1
解决办法
251
查看次数

递归 LAMBDA 用查找表中的特定替代品替换字符

目标是迭代字符表的行并用其替代字符替换每个字符。

本例中的字符表为={"&","&amp;";"<","&lt;";">","&gt;";"'","&apos;";"""","&quot;"}, 或:
在此输入图像描述
*(旁注:"&","&amp;"在这种情况下,必须位于列表的最后,否则它将替换之前替换中的其他出现,因为我们将从最后到第一个进行。)

公式:

=LAMBDA(XML,Pos,
LET(
Cls,{"&","&amp;";"<","&lt;";">","&gt;";"'","&apos;";"""","&quot;"},
Row,IF(ISOMITTED(Pos),ROWS(Cls),Pos),
Crf,INDEX(Cls,Row,1),
Crr,INDEX(Cls,Row,2),
Sub,SUBSTITUTE(XML,Crf,Crr),
IF(Row=0,XML,ENCODEXML(Sub,Row-1))
))
Run Code Online (Sandbox Code Playgroud)

预期结果=ENCODEXML("sl < dk & jf")sl &lt; dk &amp jf
我收到#VALUE!错误。

excel lambda excel-formula excel-lambda

4
推荐指数
2
解决办法
664
查看次数

Excel 函数 UNIQUE 不适用于 MAKEARRAY 和 RANDARRAY(多维数组)

我有一个关于多维数组UNIQUE中随机数生成函数的问题。

独特的不工作 正如您所看到的,我尝试在 5X5 数组内生成一个随机且唯一的数字为 1->100 的数组。

我尝试了两者MAKEARRAYRANDARRAY希望UNIQUE它可以生成随机数,但它仍然产生重复的数字(以红色突出显示)。

以下是使用的公式:

=UNIQUE(MAKEARRAY(5,5,LAMBDA(row,col,RANDBETWEEN(1,100))),,TRUE)
=MAKEARRAY(5,5,LAMBDA(row,col,UNIQUE(RANDBETWEEN(1,100),,TRUE)))
=UNIQUE(RANDARRAY(5,5,1,50,TRUE))
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方法(或 Excel 中任何未知的隐藏函数)?

arrays excel unique excel-formula excel-lambda

1
推荐指数
1
解决办法
289
查看次数