获取具有第二个 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 是动态的。
我有一个 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 是动态的。