エクセルで選択範囲の一番右の値(文字列)を取得するには?

スポンサーリンク
デフォルト 0未分類

エクセル(Excel)で選択範囲の中のセルから、値が入力されている一番右端の値を取得することはできるんでしょうか?

範囲指定した一番右の数値(セル)を返す関数はある?

スポンサーリンク

エクセルで選択範囲の一番右の値(文字列)を取得するには?

エクセル(Excel)でたとえば

200 180 150 という3つのセルの場合は「150」といった感じで一番右端の値を取得するには?

200 180 150 280 とセルの数が増えた場合でも選択範囲の一番右端にある「280」を取得するには、LOOKUPを活用します。

具体例として、セル範囲A1:H1について値が入力されているセルのうち右端の値を取得する場合を想定すると、

「=LOOKUP(10^10,1:1)」

という関数を下の行にでもコピーします。
※同じ行に入力するとエラーになります。

次に、行の中に数値が入力されていない場合エラーにしない式は、

「=IF(COUNT(1:1),LOOKUP(10^10,1:1),””)」

範囲を指定して、A列からG列の一番右の数値(途中空白可)

「=LOOKUP(10^10,A1:G1)」

行の中に数値が入力されていない場合エラーにしない式

「=IF(COUNT(A1:G1),LOOKUP(10^10,A1:G1),””)」

となります。

ここで紹介した関数の使い方について補足をすると、

■LOOKUP関数とは

・検査値が見つからないと、配列の先頭行または先頭列に含まれている検査値以下の最大の値が使用されます。
・検査値が配列の先頭行または先頭列に含まれている最小値よりも小さいと、エラー値 #N/A が返されます。

この場合、10^10 が検査値、1:1 or $J1:$Z1 が配列です。

10^10という値以下で、最大の値を返します。

但し、これはあくまでも配列内の値が昇順で、並び替えてある場合です。
並び替えられていない場合は、配列の先頭から(例では、A列~)検索していって検査値を超えた場合、その一つ前の値が返されます。

逆に言えば、検査値が入力されているすべての値よりも大きい場合は、入力されているデータの最終列(行)の値を返す事になります。

従って、入力されている値の一番右側の列に入っている値を表示する事になります。

もし、入力データが、10^10(10の10乗)よりも大きな値があるようであれば、一番右にはなりません。

その場合は、10^10の値をもっと大きな数値に変更してください。

■LOOKUP関数の10^10とは

「10^10」は10の10乗、「10000000000」を意味しますが実際には範囲内の値よりも大きい値であればOKです。

本来LOOKUP関数では値が昇順に並んでいる場合に検索したい値と同じか検索値よりも小さい中で一番近い値が選ばれます。

ところが範囲内の値よりも大きい値を検索する場合、範囲内が昇順ではなくても一番右(あるいは一番下)を返すようになっています。
(たぶん二分探索のアルゴリズムを使っているため)

これはLOOKUPだけではなくMATCHで検索の型に「1」や「-1」を指定した場合、VLOOKUPやHLOOKUPで検索の型に「TRUE」を使った場合も同じです。

タイトルとURLをコピーしました