セドリックは、定期的に値を追加する列の最後から2番目のセルの値を決定する必要があります。彼は最後から2番目の値を取得するための式を見てきましたが、最後から2番目の値は見ていません。

このニーズに取り組むことができる多くの定型的な方法があります。多くの点で、選択する方法は列のデータの特性によって異なります。データが列Aにあり、数値であり、列のどのセルにも空白がないと仮定します。その場合、次の式を使用できます。

=INDEX(A:A,COUNT(A:A)-1)

列Aにテキスト値がある場合、そのテキスト値が見出しにある場合でも、この数式は正しい結果を返さないことに注意してください。見出しを補正する場合は、この方法で数式を変更できます。 (A2:A1000の範囲のみをチェックすることに注意してください。データが行1,000を超える場合は、指定された範囲を変更する必要があります。)

=INDEX(A2:A1000,COUNT(A2:A1000)-1)

数値データに空のセルが含まれている可能性がある場合は、次の数式のいずれかで問題なく機能します。

=OFFSET(INDIRECT("A"&MATCH(9^9,A:A)),-1,0)

=INDEX(A:A,MATCH(9.9E+23,A:A,1)-1,1)

=INDEX(A:A,(MATCH(LOOKUP(10000,A:A),A:A)-1),1)

=INDEX(A:A,AGGREGATE(14,6,ROW(A:A)*A:A/A:A,2))

列の最後から2番目のセルが空の場合、これらの数式は0を返すことを認識しておく必要があります(AGGREGATE関数を使用する数式を除きます。これは、前の最初の空でないセルの値を返します。最後から2番目のセル。)

列Aのデータに数値またはテキストを含めることができる場合(ただし、空のセルは含まない場合)、別の数式が必要です。これらのいずれかが実行されます:

=INDEX(A:A,COUNTA(A:A)-1,1)

=INDIRECT("A"&COUNTA(A:A)-1)

データに空のセルがある可能性がある場合は、次のいずれかを使用できます。

=INDEX(A:A,MATCH(LOOKUP(2,1/(A:A<>""),A:A),A:A,0)-1)

=INDEX(A:A,LOOKUP(2,1/(A:A<>""),ROW(A:A))-1)

ここでも、最後から2番目のセルが空の場合、数式は0を返します。

最後に、列のセルが名前付き範囲(この場合はMyData)を使用している場合は、次のタイプの数式を使用することもできます。

ただし、列に情報を追加するときは、名前付き範囲に追加されたデータが含まれていることを確認する必要があることに注意してください。

=INDEX(MyData,ROWS(MyData)-1)

このヒントに記載されているほとんどすべての数式では、-1が使用されていることに注意してください。これは、範囲内の最後のセルではなく、最後から2番目(範囲の下部から「1つ上」)が必要であることを示します。

範囲の下限から異なるオフセットが必要な場合は、各数式のこの部分を変更できます。たとえば、範囲の下部から2セル上に配置する場合は、-1のすべてのインスタンスを-2に変更します。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(1523)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。