
たとえば、範囲 A1:A27 があり、その範囲に空の値と空でない値が混在している場合、範囲内の最初の空でない値を取得する関数と、範囲内の最後の空でない値を取得する関数の 2 つの関数が必要になります。
=First(A1:A27)
=Last(A1:A27)
範囲は単なる 1 次元配列になります。
シート内でこのインスタンスを多数実行する必要があるため、非効率のためアプリ スクリプトは使用できません。
これらの関数をどのように記述しますか。
答え1
これを使用して、範囲内の最初の空でない値を見つけることができます。
=INDEX(A1:A27, MATCH(TRUE, A1:A27<>"", 0))
これを使用して、範囲内の最後の空でない値を見つけることができます。
=INDEX(A1:A27, MAX(IF(A1:A27<>"", ROW(A1:A27))))
答え2
TOCOL関数
値のみを探している場合は、TOCOL によって空白が削除され、INDEX を使用して最初の値を取得できます。最後の値については、同じ操作を実行して行の降順で並べ替えます。
# 最初の値を取得 =INDEX(TOCOL(A1:A27,1),1) # 最後の値を取得 =INDEX(TOCOL(SORT(A1:A27,ROW(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))) //行番号を返す