2017-10-12 24 views
0

如何使用Excel函數獲取行中最後一個非零值的列名稱。Excel中最後一個非零值的列名稱

實施例:

甲:電子 - 列與值 X - 函數結果

A B C D E x 

0 0 1 0 0 C 
1 0 2 1 2 E 
0 1 1 0 1 E 
1 1 1 1 1 E 
0 0 0 0 0 
+0

爲什麼?你會用另一個公式來返回其他的東西嗎? –

+0

@ScottCraner是的。在實際的例子中,每一列都與時間有關(第一期,第二期......)我想計算開始日期和最後一次發生日期(結束日期)之間的差異。 – Kulis

+1

您需要顯示完整的問題,在一個步驟中而不是兩個步驟中執行所需的操作會更容易。 –

回答

1

CTRL +輸入 + 輸入

=IFERROR(MID(ADDRESS(ROW(),MAX(IF(A2:E2,COLUMN(A2:E2)))),2,SEARCH("$",ADDRESS(ROW(),MAX(IF(A2:E2,COLUMN(A2:E2)))),2)-2),"") 

enter image description here

2

這工作:

=IFERROR(CHAR(AGGREGATE(14,6,COLUMN(A1:E1)/(A1:E1<>0),1)+64),"") 

enter image description here

+1

將列號轉換爲列字母的簡便方法。 –

+1

@ Gary的學生,但它只適用於A-Z –

+0

@ScottCraner我沒有提到我需要它整個列的範圍。 – Kulis

1

這些陣列的公式必須使用輸入SHIFT + ENTER

這對於高至ZZ:

=IFERROR(SUBSTITUTE(MID(CELL("address",OFFSET(A1,0,MAX(IF(A1:AA1<>0,COLUMN(A1:AA1),0))-1)),2,2),"$",""),"")

這適用於所有列:

=IFERROR(MID(CELL("address",OFFSET(A1,0,MAX(IF(A1:AAA1<>0,COLUMN(A1:AAA1),0))-1)),2,FIND("$",MID(CELL("address",OFFSET(A1,0,MAX(IF(A1:AAA1<>0,COLUMN(A1:AAA1),0))-1)),2,99))-1),"")

更新:接受的答案是更有效的。它假定數字值,但也可以輕鬆更新以處理非數字值。然而,它可以進一步優化:

=IFERROR(MID(SUBSTITUTE(ADDRESS(1,MAX(IF(A2:XED2,COLUMN(A2:XED2)))),"$1",""),2,3),"")

相關問題