我正在尝试查找匹配的值并将它们排序在列中。
A列包含名称和B列由人员在A列中完成的培训。
可以在此处查看我的数据示例:
有了这些数据,我想得到一个带有两个列(名称和培训)的单独表。在C列中,我需要名称,在D列中,我想要由C列中的人员进行的训练。
client
我尝试使用上面的公式,但是它似乎仅适用于表中的第一个条目。我不知道该怎么办。
这就是我得到的
它向接受过培训的人员显示“未完成培训”,并且在“ 0”处应为“未完成培训”。
这是我的预期结果:
L.E :Anna做过Excel。上图中我的错误。
另外,我只对“培训专栏”感兴趣,因为我已经掌握了将名称排序的公式。
谢谢。
答案 0 :(得分:0)
=INDEX(Training,AGGREGATE(15,6,1/(C2=Names)*ROW(Names),COUNTIF($C$2:$C2,$C2))-1)
在这种情况下,我对以下结果使用了自定义格式:;;"No Training Done";@
但是,如果您不介意使用更长的公式,则可以使用IF
函数来返回No Training Done
语句,前提是该公式什么也不返回。
=IF(INDEX(Training,AGGREGATE(15,6,1/(C2=Names)*ROW(Names),COUNTIF($C$2:$C2,$C2))-1)=0,"No Training Done",INDEX(Training,AGGREGATE(15,6,1/(C2=Names)*ROW(Names),COUNTIF($C$2:$C2,$C2))-1))
此外,如果需要,您可以使用全列引用。如果这样做,请删除-1
,因为您不必为标题行进行调整。
如果您想使用Power Query
或Get&Transform
,只需将{em> null 替换为No Training Done
,然后根据您的结果对结果进行排序所需的顺序。所有这些都可以通过PQ编辑器GUI完成,下面是M代码
M代码
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Names", type text}, {"Training", type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type",null,"No Training Done",Replacer.ReplaceValue,{"Training"}),
#"Sorted Rows" = Table.Sort(#"Replaced Value",{{"Names", Order.Ascending}})
in
#"Sorted Rows"
答案 1 :(得分:0)
在D2:D7
中输入以下公式:
= IFERROR( INDEX( $A$2:$A$7,
AGGREGATE( 15, 6,
MATCH( $A$2:$A$7, $A$2:$A$7, 0 ),
ROWS( B2:B$2 ) ) ), "" )
然后在E2:E7
= IFERROR( TRIM( SUBSTITUTE( REPT( " ", 3 ) & INDEX( $B$2:$B$7,
AGGREGATE( 15, 6,
ROW(E:E) / ( ( $A$2:$A$7 = D2 ) * 1 ),
COUNTIF( D$2:D2, D2) ) ) & REPT( " ", 3 ), REPT( " ", 6 ), "No Training done" ) ), "" )
答案 2 :(得分:-1)
最简单的方法是:
1)复制您的信息并将其粘贴到C:D列
2)在单元格A:2上放置=COUNTIF($C$2:C2,C2)
并将其拖动到您的行范围。
3)在单元格B:2上放置=C2&A2
并将其拖动到您的行范围。
4)在单元格E:2上放置=B2
并将其拖动到您的行范围。
5)在单元格F:2上放置=IF(VLOOKUP(E2,$B$2:$D$7,3,FALSE)="","",VLOOKUP(E2,$B$2:$D$7,3,FALSE))
6)隐藏A:B列
希望有帮助