如何傳回一行中倒數第二個文字值?

如何傳回一行中倒數第二個文字值?

誰能告訴我返回連續倒數第二個文字值的 Excel 公式?

我設法找到最後一個文字值的公式:=INDEX(U2:Y2,MATCH(REPT("z",255),U2:Y2)),但不確定如何獲得倒數第二個值?

答案1

公式

這是回傳的另一種方法n從末尾開始的第 th 個文字值。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")

Ctrl公式必須使用+ Shift+Enter而不是僅作為陣列公式輸入Enter。如果兩端都出現大括號 { },那麼您就知道自己做對了。


怎麼運作的

=IFERROR(...,"")如果公式的其餘部分有錯誤,將傳回空白。如果至少沒有,您將收到“#VALUE!#”錯誤n範圍內的文字值。

INDEX(U2:Y2,...)接受陣列並傳回 in. 中的某個INDEX(U2:Y2,4)X2

LARGE(..,2)接受某個數組並傳回該數組中的第二大值。將 更改2為任何其他數字以獲得n第最大的項目。該SMALL函數類似,但返回nth最小的值代替。

ISTEXT(U2:Y2)*COLUMN(U2:Y2)是讓您將其作為數組公式輸入的部分。此函數將傳回/值ISTEXT數組,以確定每個單元格是否包含文字值。例如,這可能是。該函數傳回列號。在這種情況下,它將是。將兩者相乘 ( , )。對於我的範例,最終的數組將是.將其插入之前的公式中將會返回,因為它是第二大值。TRUEFALSE{TRUE,TRUE,FALSE,FALSE,TRUE}COLUMN{21,22,23,24,25}TRUE=1FALSE=0{21,22,0,0,25}LARGE22

-COLUMN(U2)+1只需調整插入INDEX公式的值即可考慮到我們從第 22 列開始但數組U2:Y2只有 5 列這一事實。我們想要傳回一個介於1和之間的值5,而不是2125


例子

假設您在該範圍內有以下數據U2:Y2

Hello | World | meep | 5 | boop

倒數第二個文字值是,meep讓我們看看公式是如何運作的。我將一步一步地填寫計算。您可以使用「公式」功能區上的「評估公式」來查看類似的運行過程,儘管順序可能不同。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-21+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-20),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*COLUMN(U2:Y2),2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*{21,22,23,24,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({21,22,23,0,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,23-21),"")
=IFERROR(INDEX(U2:Y2,2),"")
=IFERROR(INDEX({"Hello","World","meep",5,"boop"},2),"")
=IFERROR("meep","")
="meep"

答案2

我懷疑你的方法可能不是最有效的...但是使用你已經取得的成就,你可以利用你現有的MATCH減一為您提供新的搜尋邊界,並返回該新區域的最後一個文字。此OFFSET方法可讓您使用新的限制重新定義搜尋區域,如下所示:

=INDEX(U2:Y2,MATCH(REPT("z",255),OFFSET(U2,0,0,1,MATCH(REPT("z",255),U2:Y2)-1)))

答案3

=INDEX(D7:P7,MATCH(REPT("z",255),D7:P7)-1)

相關內容