
假設我有一個範圍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))) //返回行#