MacのNumbersでは、入力チェックを使って必要なセルが準備できるまで除算を遅らせるか、IFERRORを使ってエラーを任意の結果に置き換えます。一部だけ入力されたテンプレートでは、正当なゼロ値を維持しながら、未入力の結果を見た目上空欄にします。
この手順では、数えた物の数を総数で割る、合成データの物品数テーブルを使います。Numbers 15.4を示すAppleの現行Mac向けガイドと、Appleの「関数ヘルプ」に沿っています。インストール済みのバージョンは、Numbers > Numbersについてで確認できます。Numbersユーザガイド(Mac用)
未完成の結果をどう表示するか決める
ある行に、数えた物が6個、総数が12個と入力されているとします。その割合は6/12、つまり0.5です。総数がゼロの場合、正しい結果を得ることはできません。Appleはゼロ除算をエラーとして明記しています。数式を変更する前に、この状況でテンプレートに何を表示するかを決めてください。IFERROR
このテンプレートでは、次の方針を使います。これらはNumbersの組み込みルールではなく、この例での設計上の選択です。
| 入力の状態 | 望ましい結果 | 理由 |
|---|---|---|
| 必須の入力が未入力 | 見た目上空欄 | その行は未完成 |
| 総数がゼロ | 見た目上空欄とステータスメッセージ | 割合を定義できない |
| 数えた数がゼロで総数が正の値 | 数値0 |
結果は有効 |
| 両方の入力が適切な数値で、総数がゼロではない | 計算した割合 | その行は入力済み |
| 入力に通常のテキストが含まれる | 修正を促すメッセージ | 入力を確認する必要がある |
未入力とゼロは区別が重要です。未完成の行すべてに代替値として0を入力すると、未入力の行が、数えた数ゼロで入力済みの行のように見えてしまいます。数値のゼロを代替値にするのは、その解釈が用途に合う場合だけにしてください。
未入力がある間は待機する数式を入力する
見出し行を1行設けたテーブルを作り、次の列を用意します。以下の数式は入力値と同じテーブルに入れます。使わない入力セルは、実際に空欄のままにしてください。
| 列 | 見出し | 2行目の初期例 |
|---|---|---|
| A | グループ | ブロック |
| B | 数えた物の数 | 6 |
| C | 総数 | 12 |
| D | 数えた割合 | 数式 |
| E | 入力状況 | 今は空欄のまま |
D2を選択し、=と入力して、次の数式を入力します。Returnキーを押して確定します。先頭の等号をすでに入力している場合は、残りの数式だけを入力してください。Appleは数式の挿入手順でこの操作方法を説明しています。Numbersで表のセルのデータを使って値を計算する(Mac)
=IF(ISBLANK(B2),"",IF(ISBLANK(C2),"",IF(C2=0,"",B2/C2)))
この数式はまず数えた数、次に総数、最後に総数がゼロかどうかを確認します。入力が未完成、または割合を定義できない場合は空文字列を返し、それ以外の場合は除算します。Appleは、条件に応じて各IFが値を返す、入れ子にしたIF関数がサポートされていると説明しています。IF
入力が数値か、本当に空欄のセルになる場合は、このバージョンを使います。有効な分子ゼロは保持されます。B2が0、C2が12の場合、結果は0です。この数式では、数えた数が整数か、どちらかの入力が負の値か、数えた数が総数を超えていないかは検証しません。テンプレートに必要であれば、用途に応じたチェックを追加してください。
空欄と空欄に見えるセルの違いを理解する
数式内の""は、文字数がゼロの文字列です。結果は空欄のように見えますが、セルには数式が入ったままです。Appleは文字列を0個以上の文字で構成されるものと定義し、ISBLANKはセルが完全に空かどうかを判定する関数としています。そのため、この数式が使用可能な数値を返したかどうかを判断するために、ISBLANK(D2)を使わないでください。引数と値の型、ISBLANK
スペースにも注意が必要です。Appleによると、スペースや印字されない文字が入っているセルは、見た目が空欄でもISBLANKによってFALSEが返されます。使わない入力セルにスペースを入力するのではなく、セルをクリアしてください。ISBLANK
例では引数をカンマで区切っています。小数点にカンマを使う設定の場合、関数の引数はセミコロンで区切るようAppleが案内しています。関数の概要
行に詳しい案内が必要な場合は入力状況を追加する
再利用できるテンプレートでは、ステータス列を使うと割合が表示されない理由を説明できます。次の別の数式は、数値の入力とゼロではない分母を確認します。また、テキストや上流の数式が返す空文字列も、入力が未準備の状態として扱います。
次の数式全体をE2に入力します。
=IF(ISNUMBER(B2),IF(ISNUMBER(C2),IF(C2=0,"Enter nonzero total","Ready"),"Enter numeric total"),"Enter numeric count")
AppleのISNUMBER関数は、式が数値として評価されるとTRUEを返し、それ以外の場合はFALSEを返します。ここでは、この関数によって行の準備ができているかを明示的に確認できます。両方の入力を確認する必要がある場合、数式はまず数えた数について知らせます。そこを修正すると、次に総数を確認します。ISNUMBER
次に、D2にある先ほどの数式を、ステータスを判定条件に使う次の数式に置き換えます。
=IF(E2="Ready",B2/C2,"")
ステータスのテキストと、D2内の判定条件は一致させてください。E2の"Ready"を別のラベルに変更したら、D2でも変更してください。計算の準備状況を一目で確認できるため、未完成の行を調べやすくなります。
意図した動作を確認するには、次の例を使ってください。これらは数式のロジックを示すもので、Numbersのインストール環境から取得した測定値ではありません。
| 数えた物の数 | 総数 | 入力状況 | 数えた割合 |
|---|---|---|---|
| 空欄 | 空欄 | 数えた数を入力 | 見た目上空欄 |
6 |
空欄 | 総数を入力 | 見た目上空欄 |
6 |
0 |
ゼロ以外の総数を入力 | 見た目上空欄 |
0 |
12 |
準備完了 | 0 |
6 |
12 |
準備完了 | 0.5 |
テキストsix |
12 |
数えた数を入力 | 見た目上空欄 |
この準備状況のチェックでは、分数や負の値など、物品数に適さない可能性がある数値も許容されます。ここで確認するのは、数値の入力とゼロではない分母が用意されるまで除算を防ぐことです。
汎用的な代替値が適切な場合はIFERRORを使う
既存の除算数式を簡潔に置き換えるには、次の数式を入力します。
=IFERROR(B2/C2,"")
IFERRORは、除算が成功した場合はその結果を返し、式でエラーが発生した場合は指定した代替値を返します。Appleの説明では、ゼロ除算が例として使われています。ここでは、代替値は空文字列です。IFERROR
すべての計算エラーを同じ代替値に置き換えてよい場合は、この方法を選びます。エラー全般を処理するため、結果が空欄でも原因はわかりません。また、両方の入力が完了している必要があることを表すものでもありません。判定するのは、除算でエラーが発生するかどうかです。入力済みかどうかがテンプレートの意味に関わる場合は、上記の入力チェックを使ってください。
予期しない結果が表示された場合は、代替値で囲む前に元の計算を確認してください。エラーアイコンをクリックすると、メッセージを読めます。Appleは、参照、数値の書式、削除されたセルや挿入された行・列の影響を受けた参照を確認することを推奨しています。数式エラーを確認し、ベストプラクティスに従う
配列チェックを前提とせず数式を展開する
2行目が正しく動作したら、その結果セルを選択し、黄色いオートフィルハンドルを出力対象の行までドラッグします。ステータス列を使う場合は、D2とE2の両方をオートフィルしてください。オートフィルは数式と書式をコピーし、入力先の既存内容を上書きするため、先に入力先を確認してください。Numbersでセルをオートフィルする(Mac)
オートフィルした行を調べ、数式がその行の入力セルを参照していることを確認します。テーブルの構造を変更した後も、参照を確認してください。Appleは、行や列を挿入した後に数式を確認するよう明示的に推奨しています。数式エラーを確認し、ベストプラクティスに従う
1つのセルに対するチェックをISBLANK(B2:C20)に置き換えて、すべての行がチェックされると考えないでください。Appleによると、ISBLANKが複数のセルを参照する場合、すべてのセルが空欄でもFALSEを返します。数式を個別のものとして各行に入力してください。ISBLANK
グラフとハイライトを未完成の行に合わせる
空欄に見える数式の結果は表示方法の選択です。どの行をグラフに含めるか判断する唯一の方法にしないでください。このテンプレートでは、準備ができた行を選んでグラフにします。Appleは、グラフで選択したデータを編集する方法と、非表示またはフィルタ済みのデータを既定で除外する方法を説明しています。Numbersでグラフデータを変更する(Mac)
ステータス列を使う場合は、列Eのセルを選択し、ポインタを列記号の上に移動して矢印をクリックし、Quick Filterを選択します。Readyだけを選ぶと、入力済みの行が表示されます。未完成の入力を追加または修正するときは、フィルタを解除してください。Numbersでデータをフィルタする(Mac)
既存のグラフをクリックしてEdit Data Referencesを選ぶと、入力データの選択を確認または変更できます。フィルタ済みの行を除外するには、Format > Chart > Chart OptionsでHidden Dataのチェックを外したままにします。これらの説明済みの操作を使えば、チャートの種類を問わず""が特定の空白や欠損データの表示を保証すると仮定せずに、適切に設定できます。Numbersでグラフデータを変更する(Mac)
条件付きハイライトを使うと、ステータスを確認しやすくなります。ステータスのセルを選択し、Format > Cell > Conditional Highlightingを開いて、Add a Ruleをクリックします。Readyに一致するテキストルールを選び、スタイルを選択してから、Doneをクリックします。Appleは、別のセルとの比較を含む、選択したセルの値に基づくルールを説明しています。Numbersでセル条件を使う(Mac)
より複雑な準備状況の判定が必要な場合は、補助列でステータスを計算し、そのステータスセルをハイライトします。説明されているハイライトの操作には、任意の行全体の条件を数式で直接入力する手順はありません。同じセルに一致するルールが複数ある場合、リストの最初のルールによって表示が決まるとAppleは説明しています。ハイライトは見た目を変え、上記の数式は除算を実行するかどうかを制御します。Numbersでセル条件を使う(Mac)
テンプレートを再利用する前に、空の行、総数がゼロの行、有効なゼロの数えた数、通常の割合、テキスト入力を試してください。まだ計算できない結果は見た目上空欄にし、有効なゼロは数値として保持し、各行を完成させるための案内が見えるようにしてください。
出典
- Numbersユーザガイド(Mac用) — Apple
- Numbersで表のセルのデータを使って値を計算する(Mac) — Apple
- IF — Apple
- IFERROR — Apple
- ISBLANK — Apple
- ISNUMBER — Apple
- 引数と値の型 — Apple
- 関数の概要 — Apple
- 数式エラーを確認し、ベストプラクティスに従う — Apple
- Numbersでセルをオートフィルする(Mac) — Apple
- Numbersでグラフデータを変更する(Mac) — Apple
- Numbersでデータをフィルタする(Mac) — Apple
- Numbersでセル条件を使う(Mac) — Apple