列の最後の値を取得する(Microsoft Excel)
列の最後の(最大ではない)値を返す方法があるかどうか疑問に思うかもしれません。たとえば、A1からA5に値がある場合、A5の値を返すことができます。後で、A6からA8に値が追加された場合は、A8の値が返されます。
解決策に取り組むには、いくつかの方法があります。 1つ目は、次のような式を使用することです。
=INDEX(A:A,COUNT(A:A))
この数式は、値が(この場合)A1で始まる場合、列の最後の数値を返します。このアプローチは、列のすべての値が数値である場合にのみ機能します。値が数値でない場合、または値と混合された空白セルがある場合は、別のアプローチが必要です。 1つの方法は、値を含む可能性のあるセルのすぐ右側の列Bに次の数式をコピーすることです。
=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")
この場合、数式は、ゼロより大きい数値を含むAのセルの行番号を返します。次に、次の式を使用して、列Aの最後の値を取得できます。
=INDEX(A:A,MAX(B:B))
この数式は、列Bから最大の行番号を返し、それをインデックスとして使用して列Aから対応する値を返すために機能します。
データの範囲に数値と非数値が混在している場合(および、場合によっては、範囲内にいくつかの空白セルが混在している場合でも)、次の数式を検討できます。
=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)
この式がどのように機能するかは、最初は明らかではないかもしれません。 ISBLANK部分は、セルが空白であるかどうかに応じて、列Aの各セルのTrueまたはFalse値を含む配列を返します。そのTrueまたはFalse値(実際には1または0)が1から減算されるため、True値は0になり、False値は1になります。
次のステップは、1または0の値を1 / xの被除数として使用することです。これにより、値が効果的に「反転」され、最終的に1(1/1)または#DIV / 0になります。エラー(1/0)。これは、LOOKUP関数のパラメーターとして使用される配列であることに注意してください。配列で検索されているのは値2であり、そこには存在しません。 (配列には値1またはエラー値のみが含まれることに注意してください。)LOOKUP関数は実際には配列内のすべてのエラー値を無視するため、次を含む最後の配列要素の範囲A:A内のオフセットを返します。 1の値。これは、空白ではない範囲の最後のセルに対応します。
お分かりのように、列の最後の値を返すと、少し注意が必要になる場合があります。クリーンなアプローチは、目的の値を返す独自のVBA関数を開発することです。この場合、数値だけでなく任意の値を返すように関数をプログラムできます。このような関数の良い例は、JohnWalkenbachのWebサイトにあります。以下をチェックしてください:
http://spreadsheetpage.com/index.php/tip/determining_the_last_non_empty_cell_in_a_column_or_row/
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2512)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link列の最後の値の取得。