我有一个小工具,可以使用二进制模式生成一组项目的所有组合。该工具有效,但现在每个项目都需要一个“帮助”列。 (该工具不需要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,""))
并向下复制:
如您所见,公式非常简单。它会在 B 列中通过 E 查找 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,""))
我得到了一大堆与二进制模式无关的项目。
答案 0 :(得分:2)
此数组公式(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}))))),""))
如果允许,您可以使用垂直名称列表替换包含名称的数组常量。
编辑:要使公式更具动态性,请在某些列中输入名称列表,并将其命名为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))))))),""))
答案 1 :(得分:1)
这将手动拾取并返回,必须更改冻结值,但仅限于组合4个单词,A列中的公式会生成基于文本的结果。
ldap_connect("ldaps://server:636");