获取具有第二个 non-blank 值和第二个 non-blank 出现的列 header 的行列表

Get list of rows with a second non-blank value and the column header for the second non-blank occurrence

我有一个 Excel sheet 数据如下所示:

我需要在站点行中获取所有具有第二个 non-blank 列的站点(当然,站点除外),还需要获取列 Header 值。

在示例中,站点 B、F 和 G 有第二个 Y。因此结果应为:

我不太精通 Excel 公式,但我对 INDEX 进行了一些试验,我可以找到第二个 non-blank 值本身。但是我想不出一种方法来 return 我需要的结果。

使用下面的公式我得到了这个,但仍然离我的预期结果还差得很远。

{=INDEX(B2:I2,SMALL(IF(B2:I2<>"",COLUMN(B2:I2)-COLUMN(B2)+1),2))}

编辑:

根据@Harun24HR 的回答,我得到了这个新结果。

试试下面的公式。

=INDEX($B:$I,,SMALL(IF(($B:$I="Y")*($A:$A=C14)>0,COLUMN($B:$I),""),2)-1)

可能需要 CTRL+SHIFT+ENTER.

的数组条目

Edit#: As per my below screenshot I have used below formulas.

对于 J2 单元格中的结果列 put

=IF(COUNTIF(B2:I2,"<>")>1,ROW(),"")

C14中放

=IFERROR(INDEX($A:$A,SMALL($J:$J,ROW(1:1))),"")

并在 D14 单元格中输入以下公式。

=INDEX($A:$I,MAX(($B:$I<>"")*($A:$A=C14)*(COLUMN($B:$I))))

请注意。您无需为这些公式排列条目。

最后我结合接受的答案(@Harun24HR)和How To Extract A Dynamic List From A Data Range Based On A Criteria Without Filters In Excel

解决了这个问题

在 J2 到 J11 中,我添加了公式:

{=IFERROR(INDEX($B:$I,,SMALL(IF(($B:$I<>"")*($A:$A=A2)>0,COLUMN($B:$I),""),2)-1), "")}

在A15到A24(与原来范围相同的行数)中,我添加了公式:

{=IFERROR(INDEX($A:$A,SMALL(IF($J:$J<>"",ROW($A:$A)),ROW(1:1))-1,1),"")}

在B15到B24中,是一个简单的VLOOKUP:

=IFERROR(VLOOKUP(A15,$A:$J,10,0),"")

这样,结果 table 是动态的。