多个用户ID,状态和日期查找

时间:2019-07-18 19:41:26

标签: excel excel-formula vlookup

我有一个像这样的Excel工作表。

User ID Status  Date
A   Open    1/1/2019
A   Filled  1/2/2019
B   Open    1/12/2019
B   Filled  1/15/2019
C   Open    1/22/2019
C   Filled  1/31/2019
D   Open    7/13/2002
E   Open    8/14/2017
E   Filled  9/15/2018

我需要一个代码来获取此输出。

UserID Open Filled
A       
B       
C       
D       
E   

在这种情况下,列D的填充日期为空,因为数组中没有填充状态。

3 个答案:

答案 0 :(得分:0)

这里是一个例子:

enter image description here

G2中的公式:

=INDEX($C$2:$C$10,MATCH($F2,$A$2:$A$10,0))

H2中的公式:

=LOOKUP(2,1/($A$2:$A$10=$F2),$C$2:$C$10)

向下拖动两个...

答案 1 :(得分:0)

如果您具有Excel 2010+,则可以使用“状态”列上的Power Query Pivot,而不会进行汇总。

所有步骤都可以从GUI完成,但这是M代码供参考:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"User ID", type text}, {"Status", type text}, {"Date", type date}}),
    #"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[Status]), "Status", "Date")
in
    #"Pivoted Column"

enter image description here

enter image description here

答案 2 :(得分:0)

在这里我为您提供两种解决方案。两种方法都使用数组公式。一种是使用 MAX IF 函数的组合,另一种是使用 INDEX MATCH 的组合功能。虽然这些公式看起来有所不同,但它们暗示着相同的逻辑:

  

首先在A列和B列中找到用户ID和状态的位置,以找到C列中日期的相应位置。

请查看下面的说明,并注意示例中的日期格式为 dd / mm / yyyy ,并且我在示例中设置了以下名称:

将列A命名为用户ID

将B列命名为状态

将列C命名为日期

方法1 Method 1

这是方法1的公式,您需要按 CSE (Ctrl + Shift + Enter)以使其起作用:

{=IF(MAX(IF(User_ID&Status=$F2&G$1,Date,0))=0,"",MAX(IF(User_ID&Status=$F2&G$1,Date,0)))}

方法2 Method 2

这是方法2的公式,您还需要按 CSE 使其起作用:

{=IFERROR(INDEX(Date,MATCH($F2&G$1,User_ID&Status,0)),"")}

如果您有任何疑问,请告诉我。

干杯:)