excel 我有一个名字列表,我需要创建一个列表,以“1.名称1% 2,名称2”,“% 1,名称1 2.名称3”

68de4m5k  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(117)


的数据
所以从图片中,我已经设法做到这一点,为一个单一的名字'汉克'作为第1号,我需要这个列表来迭代,并包括所有的名字作为'1.'与其他名称作为相应的'2.',有没有一个函数,我可以写,将这样做的任何数量的初始名称?
我可以分别创建每个名称列表,但我想知道是否有一个函数可以一次性生成所有组合

e4yzc0pl

e4yzc0pl1#

你也可以尝试使用下面的公式,它不需要LAMBDA()辅助函数。
在IFS()中使用LET()、TOROW()和TOCOL()和单个参数。


的数据
·单元格C1中使用的公式

=LET(
     a, A1:A9,
     b, TOROW(a),
     TOCOL(
        IFS(
            a <> b,
            "1. " & a &
                " 2. " & b
        ),
        3
    )
)

字符串


5anewei6

5anewei62#

合并列表中合并名称


的数据

=LET(data,A1:A3,f,"1. ",s,"  2. ",
DROP(REDUCE("",data,LAMBDA(rr,r,
    VSTACK(rr,f&r&s&FILTER(data,data<>r)))),1))

字符串

6yoyoihd

6yoyoihd3#

我找到了一个非lambda的解决方案:
第一个月
或者更短,如Mayukh所建议的:=TOCOL(IF(TOROW(A1:A9)<>A1:A9,"1. "&A1:A9&" 2. "&TOROW(A1:A9),NA()),3)
将range与它的转置等价值TOROW(range)&rangeTRANSPOSE(range)&range组合将生成一个包含所有组合的2D数组,包括它自己的值的组合。
为了解决这个问题,我们使用IF(或IFS)并检查范围内的值是否不等于转置的值。
如果它不相等,我们返回范围的值和转置范围的值,否则我们声明一个错误值NA,当使用IFS时,如果条件不满足,它会抛出一个错误值。
如果我们将其 Package 在TOCOL()中,则2D数组被展平为1D数组,并且TOCOL的第二个参数为23过滤掉错误值(重复)。

相关问题