MacのApple Numbersで最後の空白でない値を見つけるには、補助列で各セルを判定し、XLOOKUPを使ってその結果を下から上へ検索します。この方法なら途中に空白があっても対応でき、ゼロも有効な値として扱えます。

ここで行うのは、表の列で最も下にある入力済みのセルを返すことです。「最後」とは行の位置を指すため、使いたい順序に表を並べてください。プロジェクトのスケジュールでは、行がその順序になっている場合に限り、最も下の項目が最新の段階を表します。

空白を含む簡単な例を設定する

Appleの現在のオンラインMacガイドには、Numbers 15.4を対象としていると記載されています。インストール済みのバージョンを確認するには、Numbers → Numbersについてを選択します。以下の数式は、Appleの現行の関数ヘルプに沿っています。Numbersユーザガイド(Mac用)

5列、8行以上の表を1つ使います。1行目に以下の見出しを入力します。A列とB列にはサンプル値を入力し、指定されたB列のセルは実際に空のままにします。「空のまま」は設定の説明なので、スプレッドシートには入力しないでください。

行 A: 段階 B: オブジェクト数 C: 空白? D: 結果ラベル E: 結果
1 段階 オブジェクト数 空白? 結果ラベル 結果
2 レイアウト 12 最後の数
3 組み立て 空のまま
4 レビュー 18
5 調整 0
6 位置合わせ 空のまま
7 仕上げ 7
8 拡張 空のまま

これはオブジェクト数の例示用の並びです。期待される答えはB7の7です。空のB8は飛ばされ、列内の途中の空白も無視されます。B5の0は入力値なので、対象に含める必要があります。

結果は、元の列と補助列のどちらにも含まれないE2に置きます。これにより、答えと計算に使うセルを分けられます。

元データの各行に空白判定を追加する

C2をクリックして、次の数式を入力します。

=ISBLANK(B2)

=を入力すると数式エディタが開きます。Returnキーを押して数式を確定します。Appleは、表のセル内の値を計算するガイドでこの入力手順を説明しています。Numbers(Mac)で表のセル内のデータを使って値を計算する

ISBLANKは、セルが完全に空の場合はTRUEを返し、それ以外の場合はFALSEを返します。この補助列では、FALSEは元のセルに何かが入っていることを意味します。スペースや印字されない文字も、セルが空に見えていても内容として数えられます。ISBLANK

C2を選択し、選択範囲の境界にポインタを移動して黄色の自動入力ハンドルが表示されたら、C8までドラッグします。自動入力では、隣接するセルに数式がコピーされます。自動入力は入力先の既存の内容を上書きするため、空の補助列を使ってください。Numbers(Mac)でセルを自動入力する

入力後にC3とC8を確認します。それぞれB3とB8を参照しているはずです。提示したサンプルでは、C2:C8に次の結果が入ります。

補助セル 期待される結果 理由
C2 FALSE B2に12が入っている
C3 TRUE B3は空
C4 FALSE B4に18が入っている
C5 FALSE B5に0が入っている
C6 TRUE B6は空
C7 FALSE B7に7が入っている
C8 TRUE B8は空

最も下にある入力済みの値を返す

E2をクリックして、次の数式を入力します。

=XLOOKUP(FALSE,C2:C8,B2:B8,\"No entries\",0,-1)

この数式はC2:C8からFALSEを検索し、対応する値をB2:B8から返します。5番目の引数0は、完全一致を指定します。最後の引数-1は、最後から最初の順に検索します。一致するものがない場合は、\"No entries\"がメッセージとして表示されます。各引数の意味は、AppleのXLOOKUPの説明に記載されています。

サンプルでは、最も下にあるFALSEはC7なので、E2にはB7の7が返されます。この答えが18より小さいことに注目してください。ここで求めるのは位置なので、最大の数値は別の問いへの答えになります。

次の3つの一時的な変更で設定を確認し、必要に応じてサンプルを元に戻します。

  1. B7を9に変更します。E2は9になるはずです。
  2. B7をクリアします。B5が元データ列で最後の入力済みセルになるため、E2は0になるはずです。
  3. B2:B8のすべてのセルをクリアします。E2にはNo entriesと表示されます。

これらの確認により、変更された値への対応、ゼロの保持、範囲全体が空の場合の処理という、よくある3つの要件を区別できます。また、補助列の数式の誤りも見つけやすくなります。

「空白」が空セルか、空に見えるセルかを決める

この方法では厳密な定義を使います。スキップされるのは、元のセルが完全に空の場合だけです。\"\"を返す数式が入ったセルには数式が残っているため、この定義には当てはまりません。その結果、見た目が空のセルが選ばれる場合があります。AppleはISBLANKを完全に空のセルという意味で定義しています。ISBLANK

数式がテキストを返す列では、長さゼロのテキスト結果をスキップしたい場合があります。その場合はC2の補助列の数式を次のように置き換え、再び下まで入力します。

=LEN(B2)=0

E2の検索数式は変更しません。この補助列は、元の値のテキスト長がゼロかどうかを判定します。Appleによると、LENは書記素を数え、任意の値を受け取ります。数える対象にはスペース、数値、特殊文字も含まれます。空文字列の長さはゼロですが、スペースの長さは1です。LEN

結果を別の場所で使う前に、どちらのルールを使うか決めてください。元の補助列は「最後に入力されているセルはどれか」に答えます。テキスト長を使う補助列は「テキスト長がゼロでない最後の値はどれか」に答えます。どちらのルールでも、スペースは空白として扱われません。

表が大きくなったときに範囲を揃える

この例では、意図的に2~8行を検索しています。元データを20行目まで拡張する場合は、補助列をC20まで入力し、検索範囲も両方とも更新します。

=XLOOKUP(FALSE,C2:C20,B2:B20,\"No entries\",0,-1)

補助列の各行は、同じ行にある元データに対応している必要があります。また、表の構造を変更した後は参照範囲を確認してください。Appleは、カテゴリ分けされた表で参照範囲内に行を追加した場合、新しい行を含めるには参照先を変更する必要があると明記しています。Numbers(Mac)で表のセル内のデータを使って値を計算する

結果を別の表に移動する場合は、元データの表名を付けて参照します。Numbersでは表名とセル参照の間に::を使います。また、数式の作成中に別の表のセルを選択すると、表名が自動で挿入されます。実際の範囲を選択すれば、セルの番地を推測せずに済みます。引数と値の種類

配列、グラフ、ハイライトによって目的が変わる方法を避ける

列全体の空白判定は補助列の代わりにならない

入力済みの補助列をISBLANK(B2:B8)に置き換えれば、7つの個別判定が得られると考えないでください。Appleは、ISBLANKが複数のセルを参照すると、すべてのセルが空でもFALSEを返すと明記しています。この関数の仕様があるため、この方法では元データの各セルを個別に評価します。ISBLANK

Numbersには配列関数があります。Appleは、配列を値の並びとして定義し、配列関数がほかの関数に値を渡せると説明しています。ただし、この一般的な機能によって、個々の関数で文書化されている引数の動作が変わるわけではありません。引数と値の種類

グラフは選択したデータを表示するもの

答えを直接確認するには、結果セルを使います。オブジェクト数もグラフにする場合は、グラフを選択してデータ参照を編集をクリックすると、参照元のセルを確認または変更できます。非表示またはフィルタで除外されたデータは、デフォルトではグラフに含まれません。また、大きなグラフでは代表的なポイントだけが表示される場合があります。そのため、表示上の終点は元の表と照合する必要があります。Numbers(Mac)でグラフデータを変更する

一致する値のハイライトでは複数のセルが選ばれることがある

視覚的な目印として、Appleはセルの値を別のセル参照と比較する条件付きハイライトのルールに対応しています。対象のセルを選択し、フォーマット → セル → 条件付きハイライトを開いて、ルールを追加をクリックします。Numbers(Mac)でセルの条件を使う

結果と数値を比較するルールを使うと、一致する値を特定できます。7が複数の元データ行にあれば、一致するセルだけではB7だと特定できません。特定の行を見つけることが目的の場合は、この違いを明確にしてください。

補助列で空白の定義を反映したら、サンプルの結果を確認し、両方の範囲を揃えて拡張します。これで、ゼロのような意味のある値を保持しながら、最後に入力された値を取得する方法を確認できます。

参考資料