gpt4 book ai didi

arrays - 在进行组合时删除辅助列

转载 作者:行者123 更新时间:2023-12-04 21:53:32 27 4
gpt4 key购买 nike

我有一个小工具,可以使用二进制模式生成一组项目的所有组合。该工具有效,但现在每个项目都需要一个“帮助器”列。 (该工具不需要 VBA)

我需要一些帮助来删除“帮助”列。

我将项目放在以 开头的第一行B1 .在 A2 ,我输入:

=DEC2BIN(ROW()-1,COUNTA($1:$1))

并向下复制。 (这使得二进制模式)

我通过输入以下内容填充“帮助”列(B 到 E):
=--MID($A2,COLUMNS($A:A),1)

B2 并横向和向下复制。

终于在 F2 我输入数组公式:
=TEXTJOIN(",",TRUE,IF($B2:$E2=1,$B$1:$E$1,""))

并向下复制:

enter image description here

如您所见,公式非常简单。它寻找 1 的列中 通过 邮箱 并从第一行加入适当的单词。

我正在尝试替换 $B2:$E2=1用某种 MID(A2)功能。 (这将消除对B、C、D、...列的需要)我尝试的是数组公式:
=TEXTJOIN(",",TRUE,IF(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)=1,$B$1:$E$1,""))

但这只会产生空白。任何帮助将不胜感激!

编辑#1:

如果我使用:
=TEXTJOIN(",",TRUE,IF(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)="1",$B$1:$E$1,""))

我得到了大量与二进制模式无关的项目。

最佳答案

此数组公式 (CSE) 将消除 B:E,并且相对容易扩展以处理更多名称。它假定您拥有 TEXTJOIN功能(Office 365)

=TEXTJOIN(",",TRUE,IFERROR(INDEX({"Larry";"Moe";"Curly";"Shep"},N(IF(1,N(AGGREGATE(15,6,1/MID(A2,{1,2,3,4},1)*{1,2,3,4},{1,2,3,4}))))),""))

如果允许,您可以将包含名称的数组常量替换为垂直的名称列表。

enter image description here

编辑:要使公式更动态,请在某列中输入名称列表,并将其命名为 Names ,那么你可以使用这个公式:
=TEXTJOIN(",",TRUE,IFERROR(INDEX(Names,
N(IF(1,N(AGGREGATE(15,6,1/MID(A2,ROW(INDIRECT(
"1:"&COUNTA(Names))),1)*ROW(INDIRECT("1:"&COUNTA(
Names))),ROW(INDIRECT("1:"&COUNTA(Names)))))))),""))

当然,您可以将 A2 公式更改为:
=IFERROR(DEC2BIN(ROW()-1,COUNTA(Names)),"")

并填写,直到你得到空白。

EDIT2:删除 A 列,并使用名为 Names 的命名范围:
=TEXTJOIN(",",TRUE,IFERROR(INDEX(Names,N(IF(1,AGGREGATE(
15,6,1/MID(IFERROR(DEC2BIN(ROW()-1,COUNTA(Names)),""),
ROW(INDIRECT("1:"&COUNTA(Names))),1)*ROW(INDIRECT(
"1:"&COUNTA(Names))),ROW(INDIRECT("1:"&COUNTA(Names))))))),""))

关于arrays - 在进行组合时删除辅助列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49559744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com