Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 一个大矩阵的高级过滤器,如何获取员工的所有信息,只需输入员工编号_Excel_Vba_Excel Formula - Fatal编程技术网

Excel 一个大矩阵的高级过滤器,如何获取员工的所有信息,只需输入员工编号

Excel 一个大矩阵的高级过滤器,如何获取员工的所有信息,只需输入员工编号,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有一个很大的矩阵,我公司的所有员工(超过1500人)都在两个不同的文件(内部和外部)中,我创建了一个新的文件,我想通过输入员工编号来获得关于员工的具体信息 我可以得到所有的具体信息,比如:姓名、保险号、工作区域等。但问题是,当我试图得到他所做的课程时(因为不止一个结果),结果有10-20个,我需要所有课程都显示出来,而不是第一个,就像我使用VLOOKUP公式时一样。 那张桌子看起来像这样: 名称课程日期状态 如果可能的话,有人有想法吗?谢谢。这是在上的exceljet.net上探索的。要避

我有一个很大的矩阵,我公司的所有员工(超过1500人)都在两个不同的文件(内部和外部)中,我创建了一个新的文件,我想通过输入员工编号来获得关于员工的具体信息

我可以得到所有的具体信息,比如:姓名、保险号、工作区域等。但问题是,当我试图得到他所做的课程时(因为不止一个结果),结果有10-20个,我需要所有课程都显示出来,而不是第一个,就像我使用VLOOKUP公式时一样。
那张桌子看起来像这样:

名称课程日期状态

如果可能的话,有人有想法吗?谢谢。

这是在上的exceljet.net上探索的。要避免链接损坏,请执行以下操作:

通式

解释

要使用INDEX和match获得第n个匹配,可以使用数组公式,该公式使用IF和SMALL函数计算匹配的行号

在所示示例中,I7中的公式为:

其中命名范围是AMT(D4:D11)、id(I3)和id(C4:C11)

请注意,这是一个数组公式,必须使用Control+Shift+Enter输入

我做了更多的工作,得到了下面的内容。请注意,我使用Insert>Table将原始数据(A、B和C列)转换为“Table1”,标题的命名非常有用

   A           B        C             D       E      F
3                                    looking for:    Bill
4
5  Name      debt     currency       nth    Debts   In...
6  Bill        50      USD             1      50     USD
7  Bill        49      EU              2      49     EU
8  Susan      100      USD             3      51     EU
9  Charles    100      LI              4      30     WON
10 Bill        51      EU              5
11 Bill        30      WON             6
…以下是公式:

debts
=IFERROR(INDEX(Table1[debt],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")

in...
=IFERROR(INDEX(Table1[Currency],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")
请注意,每行$D6旨在增加(即$D7、$D8等)


确保使用ctrl-shift-enter键完成公式的键入,以使数组公式正常工作!你会知道这是有效的,因为大括号{}出现了。

非常感谢!,这对我帮助很大!
   A           B        C             D       E      F
3                                    looking for:    Bill
4
5  Name      debt     currency       nth    Debts   In...
6  Bill        50      USD             1      50     USD
7  Bill        49      EU              2      49     EU
8  Susan      100      USD             3      51     EU
9  Charles    100      LI              4      30     WON
10 Bill        51      EU              5
11 Bill        30      WON             6
debts
=IFERROR(INDEX(Table1[debt],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")

in...
=IFERROR(INDEX(Table1[Currency],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")