我如何返回唯一的值水平的基础上关闭另一个列表在Excel上?

at0kjp5o  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(100)

我有一张table,从A1到B10看起来像这样
| | 一个|B|
| - -----|- -----|- -----|
| 1| ID|动物|
| 2| 测试1|斑马|
| 3| 测试2|斑马|
| 4| 测试4|斑马|
| 5| 测试1|长颈鹿|
| 六个|测试2|长颈鹿|
| 七个|测试4|猴子|
| 八号|测试5|猴子|
| 9| 测试5|猫|
| 10| 测试1|猫|
目前,我看下B1-B10列表,复制并粘贴到C列,D列,E列…等
因此,公式应该能够查找与测试相关联的所有Animals,并水平填充所有结果。
| ID|动物|动物|动物|
| - -----|- -----|- -----|- -----|
| 测试1|斑马|长颈鹿|猫|
| 测试2|斑马|长颈鹿||
| 测试3||||
| 测试4|斑马|猴子||
| 测试5|猴子|猫||

vmdwslir

vmdwslir1#

你可以使用一个动态数组公式来溢出,这里有两个替代方案,你也可以使用Power Query来执行这个任务。

使用公式

·单元格E2中使用的公式

=TRANSPOSE(FILTER($B$2:$B$10,$D2=$A$2:$A$10,""))

上面的公式需要填写,而这些公式是一个溢出的单个动态数组公式。

·单元格D2中使用的公式

=LET(
a,A2:A10,
b,B2:B10,
ua,UNIQUE(a),
HSTACK(VSTACK(A1,ua),IFERROR(REDUCE(TEXTSPLIT(REPT(B1&"|",3),"|",,1),ua,LAMBDA(x,y,
VSTACK(x,TOROW(FILTER(b,ISNUMBER(XMATCH(a,y)),""))))),"")))

或者

·单元格D2中使用的公式

=LET(array,A2:A10,
Col,COUNTIF(A2:A10,A2:A10),
VSTACK(HSTACK($A$1,TEXTSPLIT(REPT($B$1&"|",SEQUENCE(,MAX(Col))),"|",,1)),
IFERROR(UNIQUE(HSTACK(A2:A10,MAKEARRAY(ROWS(array),MAX(Col),
LAMBDA(r,c,INDEX(FILTER(B2:B10,array=INDEX(array,r)),c))))),"")))

或者,使用Power Query

要使用Power Query执行上述任务,请执行以下步骤:
·首先将源范围转换为表并相应地命名它,对于本例,我将其命名为Table1
·接下来,从Data Tab --> Get & Transform Data--> Get Data--> From Other Sources--> Blank Query打开一个空白查询
·上面让Power Query窗口打开,现在从Home Tab --> Advanced Editor-->并通过删除您看到的内容粘贴以下内容,然后按Done

M-Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"ID"}, {{"All", each _, type table [ID=text, Animal=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn([All],"Index",1,1)),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Other Columns", "Custom", {"ID", "Animal", "Index"}, {"ID", "Animal", "Index"}),
    #"Added Prefix" = Table.TransformColumns(#"Expanded Custom", {{"Index", each "Animal " & Text.From(_, "en-US"), type text}}),
    #"Pivoted Column" = Table.Pivot(#"Added Prefix", List.Distinct(#"Added Prefix"[Index]), "Index", "Animal")
in
    #"Pivoted Column"

·最后,要将其导入回Excel-->单击Close & LoadClose & Load To-->单击的第一个将创建一个具有所需输出的新工作表,而后者将提示一个窗口,询问您将结果放置在何处。

uidvcgyl

uidvcgyl2#

按列返回匹配项

D2(也返回唯一值;不能缺少):

=LET(Data,A2:B10,uCol,1,vCol,2,
    ud,INDEX(Data,,uCol),vd,INDEX(Data,,vCol),
    u,SORT(UNIQUE(ud)),
    v,IFNA(DROP(REDUCE("",u,LAMBDA(rr,r,
        VSTACK(rr,TOROW(FILTER(vd,ud=r))))),1),""),
HSTACK(u,v))

J2I2:I6已经包含唯一值;有些可能会丢失):

=LET(Data,A2:B10,uCol,1,vCol,2,lData,I2:I6,
    ud,INDEX(Data,,uCol),vd,INDEX(Data,,vCol),
IFNA(DROP(REDUCE("",lData,LAMBDA(rr,r,
    VSTACK(rr,TOROW(FILTER(vd,ud=r,""))))),1),""))
yyyllmsg

yyyllmsg3#

如果您有Excel 365,您可以在F2中使用此公式返回TEST的所有动物!

=TOROW(FILTER(B2:B10,A2:A10=E2,""))

相关问题