取得某個範圍的第一個值和最後一個值

取得某個範圍的第一個值和最後一個值

假設我有一個範圍A1:A27,並且該範圍混合了空值和非空值,我想要兩個函數:一個用於獲取該範圍中的第一個非空值,一個用於獲取最後一個非空值像這樣的範圍內的空值。

=First(A1:A27)
=Last(A1:A27)

範圍只是一維數組。

我將不得不在我的工作表中執行許多這樣的實例,因此應用程式腳本由於效率低下而無法使用。

你會如何寫出這些函數。

答案1

我們可以用它來找出範圍內的第一個非空值:

=INDEX(A1:A27, MATCH(TRUE, A1:A27<>"", 0))

我們可以用它來找出範圍內的最後一個非空值:

=INDEX(A1:A27, MAX(IF(A1:A27<>"", ROW(A1:A27))))

答案2

總膽固醇功能

如果您只尋找值,TOCOL 將刪除空格,您可以使用 INDEX 取得第一個值,對於最後一個值執行相同的操作,但按行降序排序:

# 取得第一個值 
=索引(TOCOL(A1:A27,1),1)

# 取得最後一個值 
=索引(TOCOL(排序(A1:A27,行(A1:A27),0),1),1)

XMATCH函數

XMATCH函數對於此應用程序,MATCH 具有優勢,因為它支援從先到後和從後到先搜尋。

# 句法 
=XMATCH(搜尋鍵、尋找範圍、[匹配模式]、[搜尋模式])

XMATCH 範例

第一個值語法類似於 MATCH,除了exact_match=0是預設的,所以可以省略。

# 第一個值 
=INDEX(A1:A27, XMATCH(TRUE, A1:A27<>""))      
=ROW(INDEX(A1:A27, XMATCH(TRUE, A1:A27<>""))) //返回行#

XMATCH 透過指定支援從後到先搜尋search_mode=-1

# 最後的值 
=INDEX(A1:A27, XMATCH(TRUE, A1:A27<>"",,-1))
=ROW(INDEX(A1:A27, XMATCH(TRUE, A1:A27<>"",,-1))) //返回行#

相關內容