【Googleスプレッドシート】チェックボックスをカスタム値で動かす!TRUE/FALSE以外の設定

【Googleスプレッドシート】チェックボックスをカスタム値で動かす!TRUE/FALSE以外の設定
🛡️ 超解決

Googleスプレッドシートのチェックボックスは、標準ではTRUEまたはFALSEの値を返します。しかし、タスク管理やアンケート集計など、チェックの状態に応じて「完了」「未完了」や「○」「×」といった任意のテキストを表示したい場面も多いでしょう。この記事では、チェックボックスをカスタム値で動作させる3つの方法を具体的に解説します。データの入力規則、IF関数、Apps Scriptのそれぞれの特徴を理解すれば、目的に合った方法を選べるようになります。

【要点】チェックボックスにカスタム値を設定する3つの方法

  • データの入力規則と表示形式を組み合わせる方法: チェックボックス自体の表示をカスタムテキストに変えられますが、セルの値はTRUE/FALSEのままです。
  • IF関数でTRUE/FALSEを変換する方法: 別のセルに =IF(A2=TRUE,”完了”,”未完了”) と書き、チェック結果を任意の文字列に変換します。
  • Apps ScriptのonEditトリガーを使う方法: チェックボックスをオンにした瞬間にセル値を直接カスタム値で上書きします。スクリプトの記述が必要です。

ADVERTISEMENT

チェックボックスが返す値の仕組みとカスタム値の必要性

チェックボックスは、挿入時点では常にTRUEまたはFALSEの論理値を返します。この値はIF関数や条件付き書式でそのまま使えるため、多くの用途では不自由しません。しかし、例えばタスク管理表で「チェックが入ったらセルに『完了』と表示したい」「アンケートでチェック項目ごとに異なるラベルを付けたい」といった場合、TRUEやFALSEのままでは見た目や集計に不便です。カスタム値を設定することで、シートの見やすさが向上し、他の関数との連携もスムーズになります。以下では3つの代表的な方法を紹介します。

チェックボックスをカスタム値で動作させる3つの方法

方法1: データの入力規則と表示形式で見た目を変える

この方法は、セルの値はTRUE/FALSEのままですが、表示されるテキストだけをカスタム値に見せかけます。実際の値は変わらないため、数式や集計には注意が必要です。

  1. チェックボックスを挿入する
    任意のセルを選択し、メニュー「挿入」→「チェックボックス」をクリックします。デフォルトでTRUE/FALSEが設定されます。
  2. 表示形式をカスタム数値形式に変更する
    チェックボックスが入っているセルを右クリックし、「セルの書式設定」を開きます。「数値」タブの「カスタム数値形式」に、以下のように入力します。
    「”完了”;”未完了”;””」
    これは「正の値(TRUE)の場合『完了』、負の値(FALSEの場合)『未完了』、ゼロや空白は空欄」という意味です。
  3. 動作を確認する
    チェックをオンにするとセルに「完了」、オフにすると「未完了」と表示されます。ただし、セルをクリックして数式バーを見ると、実際の値はTRUEまたはFALSEのままであることがわかります。

この方法のメリットは、簡単でスクリプト不要なことです。ただし、表示と実際の値が異なるため、VLOOKUPなどで参照する際に注意が必要です。また、表示できるのは1つのテキストのみで、チェックボックスがオフのときとオンのときで異なるテキストを指定できます。

方法2: IF関数でTRUE/FALSEをカスタム文字列に変換する

チェックボックスの値をそのままに、別のセルにカスタム値を表示する方法です。元のチェックボックスの値は残るため、数式での参照との併用が容易です。

  1. チェックボックスを配置する
    たとえばA2セルにチェックボックスを挿入します。値はTRUE/FALSEです。
  2. 隣のセルにIF関数を入力する
    B2セルに次の数式を入力します。
    「=IF(A2=TRUE,”完了”,”未完了”)」
    これで、チェックがオンなら「完了」、オフなら「未完了」と表示されます。
  3. 必要に応じて数式をコピーする
    作成した数式を他の行にドラッグしてコピーすれば、同様の動作を実現できます。

応用として、TRUE/FALSE以外に「1」「0」など数値に変換することも可能です。また、IF関数を入れ子にして複数の条件を設定することもできます。この方法の最大の利点は、スクリプトが不要で、数式を理解している人ならすぐに実装できる点です。ただし、表示用の列が別に必要になるため、シートが横に広がります。

方法3: Apps ScriptのonEditトリガーで直接セル値を書き換える

チェックボックスをオン/オフした瞬間に、そのセルの値を直接カスタム値に書き換える方法です。スクリプトの記述が必要ですが、より柔軟な動作が可能です。

  1. スクリプトエディタを開く
    メニュー「拡張機能」→「Apps Script」をクリックします。
  2. onEdit関数を記述する
    デフォルトのコードを削除し、以下のスクリプトを貼り付けます。
    function onEdit(e) {
    var range = e.range;
    if (range.isChecked()) {
    range.setValue("完了");
    } else {
    range.setValue("未完了");
    }
    }

    このスクリプトは、編集されたセルがチェックボックスの場合、チェック状態に応じて「完了」または「未完了」に値を書き換えます。
  3. プロジェクトを保存してトリガーを設定する
    スクリプトエディタで「保存」アイコンをクリックし、プロジェクト名を付けます。次に、左メニューの「トリガー」をクリックし、「トリガーを追加」を選択します。「イベントの種類」で「編集時」を選び、「保存」します。これで、シート上でチェックボックスを操作するたびにonEdit関数が自動実行されます。
  4. 動作を確認する
    シートに戻り、チェックボックスをオンにするとセルに「完了」、オフにすると「未完了」と表示され、数式バーにも同じ文字列が表示されます。セルの値が直接変わっているため、参照関数も正しく動作します。

この方法のメリットは、セルの値そのものがカスタム値になるため、他の数式との連携がシームレスになることです。ただし、スクリプトの記述とトリガー設定が必要で、初心者にはややハードルが高いかもしれません。また、元のTRUE/FALSEの値は失われるため、チェックボックスの状態を論理値で参照したい場合は別の列に保存するなどの工夫が必要です。

各方法の注意点と失敗しやすいポイント

方法1で表示形式を適用しても数式バーではTRUE/FALSEのまま

表示形式で見た目を変えても、セルの実データはTRUE/FALSEです。そのため、SUMIFやCOUNTIFでカスタムテキストを条件に指定しても正しく集計できません。集計には元のTRUE/FALSEを使うか、別の列にIF関数で変換する必要があります。

方法2でIF関数を使うと元のセルにチェックボックスが残る

IF関数は別のセルに結果を出力するため、チェックボックス自体の値はTRUE/FALSEのままです。チェックボックスが邪魔になったり、値の二重管理が必要になったりします。どうしてもチェックボックスのセル自体をカスタム値にしたい場合は、方法1または方法3を検討しましょう。

方法3でonEditトリガーが動作しない場合の対処

Apps ScriptのonEditトリガーが正しく動作しない原因として、スクリプトの権限承認不足が考えられます。初回実行時に権限を求められたら「許可」をクリックしてください。また、トリガーのイベント種類が「編集時」になっているか確認します。さらに、シートの保護範囲が設定されていると編集が制限され、トリガーが発火しないことがあります。

ADVERTISEMENT

3つの方法の比較

方法 設定の簡単さ セルの実データ スクリプトの要不要 他の数式との連携
表示形式 とても簡単 TRUE/FALSEのまま 不要 注意が必要
IF関数 簡単 TRUE/FALSEは別の列に 不要 良好
Apps Script やや難しい 直接カスタム値に書き換え 必要 最も良好

まとめ

チェックボックスをカスタム値で動かす方法として、表示形式を使った見せかけの変更、IF関数による変換、Apps Scriptによる直接書き換えの3つを紹介しました。それぞれに利点と制限があるため、シートの目的や自分のスキルに合った方法を選びましょう。例えば、簡易的なタスク管理には表示形式、本格的なデータ管理にはApps Scriptがおすすめです。次のステップとして、条件付き書式と組み合わせて色を変えたり、IMPORTRANGEで別シートからカスタム値を参照したりする応用にも挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。