範囲の最初の値と最後の値を取得する

範囲の最初の値と最後の値を取得する

たとえば、範囲 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))) //行番号を返す

関連情報