投稿者: admin

  • ISBLANK関数の使い方|「本当の空欄」と「空に見えるセル」を見分ける

    ISBLANKは、セルが本当に空欄かどうかを判定する関数です。

    =A1="" でも空欄判定はできますが、両者は別の意味を持ちます。この違いを知らないと、件数が合わない・条件が効かないといった問題の原因が分かりません。

    書式

    =ISBLANK(セル)

    TRUEFALSE を返します。

    ="" との違い

    これがこの関数の核心です。

    セルの状態 ISBLANK(A1) A1 = ""
    何も入力していない TRUE TRUE
    数式が "" を返している FALSE TRUE
    スペースが1つ入っている FALSE FALSE
    0 が入っている FALSE TRUE(※)

    A1 = ""0 に対しても TRUE を返す環境があります。0と空欄を区別したいなら ISBLANKCOUNT を使ってください。

    数式が返した空文字

    =IF(A2="", "", A2*1.1)

    この数式が入ったセルは、見た目は空欄ですが、値としては空文字("")が入っています。

    • ISBLANKFALSE(何か入っている)
    • = ""TRUE(空文字と一致する)
    • COUNTA1件として数える
    • COUNTBLANK → 空欄として数える

    COUNTAとCOUNTBLANKで扱いが逆なので、両方を足しても全体の件数にならないことがあります。合計が合わないときは、ここを疑ってください。

    使い分けの判断

    やりたいこと 使うもの
    見た目が空欄なら処理をスキップ A1 = ""
    本当に未入力の行を検出したい ISBLANK
    入力漏れを厳密にチェックする ISBLANK
    数式の結果も含めて空扱いにしたい A1 = ""

    実務では = "" のほうが使用頻度が高くなります。 「見た目が空欄なら何もしない」という要件が多いためです。

    ISBLANKが必要なのは、「入力されたかどうか」そのものを問題にする場面です。

    実用例

    入力漏れを検出する

    =IF(ISBLANK(C2), "未入力", "")

    C列に数式が入っている場合、C2 = "" だと「数式で空になった行」まで未入力と判定してしまいます。ISBLANKなら区別できます。

    未入力の件数を数える

    =SUMPRODUCT(--ISBLANK(C2:C100))

    --TRUE/FALSE を1/0に変換する書き方です。

    COUNTBLANK でも数えられますが、数式が返した "" も空欄として数えてしまいます。 厳密に未入力だけを数えるならこちらです。

    必須項目がすべて埋まっているか

    =IF(OR(ISBLANK(A2), ISBLANK(B2), ISBLANK(C2)), "未完了", "完了")

    項目が多いなら COUNTA のほうが短く書けます。

    =IF(COUNTA(A2:F2) = 6, "完了", "未完了")

    ただし COUNTA は数式の "" を数えるので、数式が入る列では正確でなくなります。

    条件付き書式で未入力を目立たせる

    =ISBLANK($C2)

    列だけを $ で固定してください。

    配列で使えない点に注意

    ISBLANKは ARRAYFORMULA の中で正しく動きません。 範囲を渡しても、最初のセルだけを判定する挙動になります。

    全行で判定したいなら、次のように書き換えてください。

    =ARRAYFORMULA(IF(A2:A="", "未入力", ""))

    または LEN を使います。

    =ARRAYFORMULA(IF(LEN(A2:A)=0, "未入力", ""))

    LEN(A2)=0 は文字数が0という判定で、数式が返した "" も0になります。挙動としては = "" に近いものです。

    他のIS系関数

    関数 判定するもの
    ISBLANK 空欄か
    ISNUMBER 数値か
    ISTEXT 文字列か
    ISERROR エラーか(すべての種類)
    ISNA #N/A
    ISLOGICAL TRUE/FALSE

    ISNUMBER は実務で頻出します。

    数値が文字列になっていないか確認する

    =IF(ISNUMBER(A2), "数値", "文字列")

    SUM の合計が合わないときの原因切り分けに使えます。COUNT で範囲全体を確認する方法もあります。

    部分一致の判定

    =IF(ISNUMBER(SEARCH("営業", A2)), "該当", "")

    SEARCH は見つかった位置を返し、見つからなければエラーになります。それを ISNUMBERTRUE/FALSE に変換しています。FILTER の条件でもよく使う形です。

    エラーかどうかの判定

    =IF(ISERROR(A2), "エラーあり", "")

    エラーを別の値に置き換えたいだけなら IFERROR のほうが簡単です。ISERROR は「エラーの件数を数える」など、エラーの存在自体を扱いたいときに使います。

    =SUMPRODUCT(--ISERROR(C2:C100))

    Excelとの違い

    ISBLANK および IS系関数はすべて共通です。書式も挙動も同じで、数式が返した "" に対して FALSE を返す点も同じです。

    ARRAYFORMULA はスプレッドシート固有ですが、Excel 365のスピルでも同様に ISBLANK は配列に対して期待通りに動かないことがあります。

    まとめ

    • ISBLANK は「本当に何も入っていないか」を判定する
    • 数式が返した "" に対しては FALSE を返す。ここが = "" との決定的な違い
    • COUNTACOUNTBLANK の食い違いも、この空文字が原因
    • – 実務では = "" のほうが出番が多い。ISBLANKは入力漏れの厳密なチェックに使う
    • ARRAYFORMULA の中では動かないLEN(A2:A)=0 で代用する
    • ISNUMBER は文字列化の検出と部分一致判定に頻出

    関連する関数

  • WEEKDAY関数の使い方|曜日を判定して土日に色を付ける

    WEEKDAYは、日付が何曜日かを番号で返す関数です。

    曜日を文字で表示したいだけなら TEXT のほうが簡単です。WEEKDAYが必要なのは、曜日で判定・分岐したいときです。

    書式

    =WEEKDAY(日付, [種類])

    第2引数によって、何曜日を1とするかが変わります。

    種類による番号の違い

    種類 1 2 3 4 5 6 7
    1(既定)
    2
    3 月=0 火=1 水=2 木=3 金=4 土=5 日=6

    既定は「日曜が1」です。ここを勘違いすると判定が全部ずれます。

    種類2は「月曜が1」で、日本の業務では扱いやすいことが多くなります。

    基本の使い方

    A1に 2026/4/1(水曜)が入っているとします。

    =WEEKDAY(A1)      → 4   (日曜が1なので、水曜は4)
    =WEEKDAY(A1, 2)   → 3   (月曜が1なので、水曜は3)

    土日を判定する

    既定(種類1)で書く

    =OR(WEEKDAY(A1)=1, WEEKDAY(A1)=7)

    日曜(1)か土曜(7)なら TRUE です。

    種類2で書く(推奨)

    =WEEKDAY(A1, 2) >= 6

    月曜=1〜金曜=5、土曜=6、日曜=7 なので、6以上が土日になります。こちらのほうが短く、意図も明確です。

    平日の判定はこうなります。

    =WEEKDAY(A1, 2) <= 5

    条件付き書式で土日に色を付ける

    カレンダーや勤怠表で最もよく使う用途です。

    「表示形式 → 条件付き書式 → カスタム数式」に次を入れます。

    土曜を青く

    =WEEKDAY($A2, 2) = 6

    日曜を赤く

    =WEEKDAY($A2, 2) = 7

    列だけを $ で固定するのがポイントです。範囲を A2:F1000 にすれば行全体に色が付きます。

    祝日も色分けする

    祝日リストを別シートに用意して、COUNTIF で判定します。

    =OR(WEEKDAY($A2,2)>=6, COUNTIF(祝日!$A:$A, $A2)>0)

    祝日リストは自分で用意する必要があります。 内閣府が公開しているCSVを取り込むのが確実です。

    曜日を文字で表示したいなら

    WEEKDAYではなく TEXT を使ってください。

    =TEXT(A1, "aaa")    → 水
    =TEXT(A1, "aaaa")   → 水曜日
    =TEXT(A1, "ddd")    → Wed

    WEEKDAYと SWITCH を組み合わせる方法もありますが、TEXT のほうが圧倒的に短く書けます。

    =SWITCH(WEEKDAY(A1), 1,"日", 2,"月", 3,"火", 4,"水", 5,"木", 6,"金", 7,"土")

    この書き方が必要になるのは、独自の表記(「日曜日」「Sun.」など)にしたいときだけです。

    曜日別に集計する

    作業列に曜日番号を出して、SUMIFS で集計します。

    作業列B2:  =ARRAYFORMULA(IF(A2:A="", "", WEEKDAY(A2:A, 2)))
    集計:      =SUMIFS(C:C, B:B, 1)

    曜日名で集計したいなら TEXT を使います。

    作業列B2:  =ARRAYFORMULA(IF(A2:A="", "", TEXT(A2:A, "aaa")))
    集計:      =SUMIFS(C:C, B:B, "月")

    QUERY を使うなら1行で書けます。

    =QUERY({ARRAYFORMULA(TEXT(A2:A100,"aaa")), C2:C100}, "select Col1, sum(Col2) where Col1 <> '' group by Col1", 0)

    営業日の計算

    WEEKDAYで判定するより、専用の関数を使うほうが確実です。

    やりたいこと 使う関数
    N営業日後を求める WORKDAY(開始日, 日数, 祝日範囲)
    期間内の営業日数を数える NETWORKDAYS(開始日, 終了日, 祝日範囲)
    =WORKDAY(TODAY(), 5, 祝日!A:A)
    =NETWORKDAYS(A1, B1, 祝日!A:A)

    土日を自動で除外し、祝日リストも渡せます。 WEEKDAYで自作するより確実です。

    週休が土日でない場合は、WORKDAY.INTL / NETWORKDAYS.INTL で休みの曜日を指定できます。

    よくある問題

    判定が1日ずれる

    第2引数を指定していない可能性が高いです。既定は日曜が1です。種類2(月曜が1)を明示してください。

    #VALUE! が出る

    対象が日付ではなく文字列になっています。セルが左寄せになっていないか確認し、DATEVALUE で変換してください。

    条件付き書式が全行に適用される

    参照が $A$2 になっています。$A2 にしてください。

    空欄の行に色が付く

    空欄は0として扱われ、WEEKDAY(0, 2) は7(日曜)を返します。空欄除外を条件に入れてください。

    =AND($A2 <> "", WEEKDAY($A2, 2) >= 6)

    Excelとの違い

    WEEKDAY・WORKDAY・NETWORKDAYS ともに共通です。種類の番号も同じです。

    Excelには種類11〜17(各曜日を1とする指定)もありますが、実務で使う1・2・3は共通です。

    TEXT"aaa"(日本語の曜日)も両方で使えます。

    まとめ

    • – 書式は =WEEKDAY(日付, 種類)
    • 既定は「日曜が1」。ここでずれる事故が最も多い
    • – 土日判定は =WEEKDAY(A1, 2) >= 6 が最短
    • 曜日を文字で表示するだけなら TEXT を使う
    • – 条件付き書式では $A2(列だけ固定)+空欄除外
    • – 営業日の計算は WORKDAY / NETWORKDAYS

    関連する関数

  • REGEXREPLACE関数の使い方|正規表現でまとめて置き換える

    REGEXREPLACEは、正規表現に一致した部分を、別の文字に置き換える関数です。

    SUBSTITUTE が「特定の文字」を置き換えるのに対し、REGEXREPLACEは「パターン」で置き換えます。 複数種類の文字をまとめて処理できるのが強みです。

    Excelにはありません。 スプレッドシート固有の関数です。

    書式

    =REGEXREPLACE(文字列, 正規表現, 置換文字)

    一致したすべての箇所が置き換わります。1箇所だけということはできません。

    正規表現の最小限の知識

    記号 意味
    \d 数字1文字
    \D 数字以外1文字
    \s 空白1文字
    . 任意の1文字
    + 直前を1回以上
    * 直前を0回以上
    [abc] a か b か c
    [^abc] a b c 以外
    ^ 先頭
    $ 末尾
    (...) キャプチャ(後で $1 で参照)
    `\ ` または

    . ( ) - などを文字そのものとして扱うときは、前に \ を付けます。

    不要な文字を一括削除する

    REGEXREPLACEの最頻出の用途です。

    ハイフン・スペースをまとめて削除

    =REGEXREPLACE(A1, "[-  ]", "")

    [-  ] は「ハイフン、半角スペース、全角スペースのどれか」という意味です。

    SUBSTITUTE だと入れ子が3重になります。

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "-", ""), " ", ""), " ", "")

    削除対象が3つを超えたら、REGEXREPLACEに切り替えるのが実用的な目安です。

    数字以外を全部削除する

    =REGEXREPLACE(A1, "\D", "")

    電話番号や郵便番号から記号を除いて、数字だけにできます。

    計算に使うなら VALUE で数値化してください。

    =VALUE(REGEXREPLACE(A1, "\D", ""))

    全角数字を含めて処理する

    =VALUE(REGEXREPLACE(ASC(A1), "\D", ""))

    ASC で全角を半角に変換してから処理します。

    記号だけ削除して文字は残す

    =REGEXREPLACE(A1, "[^\w\sぁ-んァ-ン一-龥]", "")

    連続する空白を1つにまとめる

    =REGEXREPLACE(A1, "\s+", " ")

    改行を削除する

    =REGEXREPLACE(A1, "\n", "")

    CSVやWebからコピーしたデータに紛れ込む改行を除去できます。

    キャプチャで並べ替える

    REGEXREPLACEの最も強力な機能です。

    () で囲んだ部分を、置換文字の中で $1 $2 として参照できます。

    姓名を入れ替える

    =REGEXREPLACE(A1, "^(\S+)\s+(\S+)$", "$2 $1")

    山田 太郎太郎 山田

    日付の形式を変える

    =REGEXREPLACE(A1, "(\d{4})/(\d{1,2})/(\d{1,2})", "$1年$2月$3日")

    2026/4/12026年4月1日

    元が文字列の日付の場合に使えます。日付型なら TEXT を使ってください。

    電話番号を整形する

    =REGEXREPLACE(REGEXREPLACE(A1, "\D", ""), "^(\d{2,4})(\d{4})(\d{4})$", "$1-$2-$3")

    内側でまず数字だけにして、外側でハイフンを入れています。

    全行に適用する

    ARRAYFORMULA が確実に効きます。

    =ARRAYFORMULA(IF(A2:A="", "", REGEXREPLACE(A2:A, "[-  ]", "")))

    データ整形を1本の数式で全行に効かせられるので、CSVの前処理に強い組み合わせです。

    REGEXEXTRACT・REGEXMATCHとの使い分け

    関数 用途 一致しないとき
    REGEXREPLACE 置き換える 元の文字列がそのまま返る
    REGEXEXTRACT 取り出す #N/A
    REGEXMATCH 判定する FALSE

    REGEXREPLACEは一致しなくてもエラーになりません。 元の文字列がそのまま返ります。IFERROR で包む必要がないのは、REGEXEXTRACT にはない利点です。

    大文字小文字を区別しない

    先頭に (?i) を付けます。

    =REGEXREPLACE(A1, "(?i)tokyo", "東京")

    SUBSTITUTE は大文字小文字を区別するので、区別せずに置換したいときはこちらを使ってください。

    よくある問題

    置き換わらない

    • – パターンが実際のデータと一致していない
    • – 全角と半角が違う(-1
    • – 特殊文字をエスケープしていない(. ( ) [ ] * + ? \

    . を文字として扱いたいなら \. と書いてください。

    想定以上に置き換わる

    • . を「任意の1文字」として使ってしまっている
    • + が貪欲に一致しすぎている → +? で最短一致に

    結果が文字列になる

    REGEXREPLACEの結果は常に文字列です。計算に使うなら VALUE で数値化してください。

    #VALUE! が出る

    正規表現の書き方が不正です。括弧の対応や、エスケープを確認してください。

    まとめ

    • – 書式は =REGEXREPLACE(文字列, "正規表現", "置換文字")
    • 一致したすべての箇所が置き換わる
    • – 削除対象が3つを超えたら SUBSTITUTE から乗り換える
    • ()$1 で並べ替えができる(姓名の入れ替えなど)
    • 一致しなくてもエラーにならない(元の文字列が返る)
    • – 全行適用は ARRAYFORMULA で確実に効く
    • – Excelには無い

    関連する関数

  • TRANSPOSE関数の使い方|行と列を入れ替える

    TRANSPOSEは、行と列を入れ替える関数です。

    縦に並んだデータを横に、横に並んだデータを縦にします。元のデータには手を触れず、入れ替えた結果を別の場所に表示します。

    書式

    =TRANSPOSE(範囲)

    引数は範囲だけです。

    基本の動き

    A B C
    1 東京 大阪 名古屋
    2 1200 800 1500
    =TRANSPOSE(A1:C2)

    結果:

    東京 1200
    大阪 800
    名古屋 1500

    2行3列が、3行2列になりました。

    貼り付け機能との違い

    同じことは「編集 → 特殊貼り付け → 転置して貼り付け」でもできます。

    特殊貼り付け TRANSPOSE
    元データとの連動 しない(固定値) する(自動更新)
    数式の残り方 値だけ残る 数式として残る
    使う場面 一度きりの変換 継続的に見たい

    元データが更新される表なら TRANSPOSE、一度きりの整形なら特殊貼り付けという使い分けになります。

    他の関数と組み合わせる

    TRANSPOSEは範囲を返すので、他の関数の中でも使えます。

    SPLITの結果を縦にする

    SPLIT は結果を横方向に返します。縦にしたいときに使います。

    =TRANSPOSE(SPLIT(A1, ","))

    縦のリストを横に並べる

    見出し行を作るときなどに使います。

    =TRANSPOSE(マスタ!A2:A20)

    FILTERの結果を入れ替える

    =TRANSPOSE(FILTER(A2:C100, A2:A100="東京"))

    縦横の検索を作る

    MATCH と組み合わせて、横方向の検索に使うこともできます。ただし HLOOKUPXLOOKUP のほうが素直です。

    横持ちを縦持ちにしたいとき

    TRANSPOSEでは目的を達成できないことがあります。

    月ごとに列が伸びる「横持ち」の表を、集計しやすい「縦持ち」に直したい場合を考えてください。

    元の表

    支店 4月 5月 6月
    東京 1200 1400 1300
    大阪 800 950 900

    欲しい形

    支店 金額
    東京 4月 1200
    東京 5月 1400

    TRANSPOSEは単に行列を入れ替えるだけなので、この形にはなりません。 FLATTEN を使った変換が必要です。詳しくは FLATTEN のページで扱っています。

    「行列の入れ替え」と「持ち方の変換」は別物です。ここは混同しやすいところです。

    エラーの対処

    #REF! が出る

    結果の展開先にデータが入っています。 TRANSPOSEは元の範囲の縦横を入れ替えた大きさで展開されます。

    3行10列の範囲なら、結果は10行3列です。展開先にそれだけの空きが必要になります。

    空欄が0になる

    TRANSPOSEは空欄を 0 として返します。空欄のまま表示したいなら IF を挟みます。

    =ARRAYFORMULA(IF(TRANSPOSE(A1:C2)="", "", TRANSPOSE(A1:C2)))

    TRANSPOSEを2回書く必要があり冗長ですが、これが標準的な回避方法です。

    書式が引き継がれない

    値だけが返ります。 色や罫線は反映されません。書式も含めて入れ替えたいなら、特殊貼り付けを使ってください。

    Excelとの違い

    TRANSPOSEは共通です。書式も挙動も同じです。

    ただし違いがあります。

    Excel スプレッドシート
    入力方法(旧版) 配列数式(Ctrl+Shift+Enter) 通常の入力
    入力方法(365) 通常の入力 通常の入力
    特殊貼り付けでの転置 ある ある

    Excel 2019以前では、TRANSPOSEは配列数式として Ctrl + Shift + Enter で確定する必要がありました。スプレッドシートでは通常の入力で動きます。

    まとめ

    • – 書式は =TRANSPOSE(範囲)行と列を入れ替える
    • 元データと連動するのが特殊貼り付けとの違い
    • – 結果は元の縦横が入れ替わった大きさで展開される
    • #REF!展開先にデータがあるという意味
    • – 空欄は 0 になる。避けるなら IF を挟む
    • 「横持ち→縦持ち」の変換はTRANSPOSEではできないFLATTEN を使う

    関連する関数

  • COUNTA関数の使い方|入力済みのセルを数える

    COUNTAは、空欄でないセルの個数を数える関数です。

    数値だけを数える COUNT と違い、文字列も日付も数えます。 「入力済みの行数を数えたい」という最も多い用途では、こちらが正解です。

    書式

    =COUNTA(範囲1, [範囲2], ...)

    COUNTとの違い

    A
    1 120
    2 りんご
    3 (空欄)
    4 2026/4/1
    =COUNT(A1:A4)    → 2   (数値と日付のみ)
    =COUNTA(A1:A4)   → 3   (空欄以外すべて)

    文字列の列に COUNT を使うと0になります。 「なぜか0になる」という相談の大半がこれです。

    数式が返した空文字の落とし穴

    これが最も注意すべき点です。

    =IF(A2="", "", A2*1.1)

    この数式が入ったセルは、見た目は空欄ですが、COUNTAは1件として数えます。

    セルには「空文字("")という値」が入っているためで、「何も入っていない」状態とは区別されます。

    見た目通りに数える

    =COUNTIF(A2:A100, "<>")

    COUNTIF のこの書き方なら、数式が返した "" は数えられません。数式が入った列で件数を数えるときは、必ずこちらを使ってください。

    厳密に「未入力」を数える

    =SUMPRODUCT(--ISBLANK(A2:A100))

    ISBLANK は「本当に何も入っていない」かを判定します。数式の入ったセルは FALSE を返します。

    実用例

    入力済みの行数

    =COUNTA(A2:A1000)

    見出し行を含めないよう、範囲は2行目から始めてください。

    入力漏れの検出

    =COUNTA(A2:A100) - COUNTA(B2:B100)

    A列は入っているのにB列が空、という件数が分かります。

    可変範囲を作る

    OFFSET と組み合わせます。

    =OFFSET(A2, 0, 0, COUNTA(A2:A1000), 1)

    データ量に自動で追従する範囲になります。グラフの参照範囲などに使えます。

    ただし途中に空行があると、範囲が実際より短くなります。 連続したデータでのみ使ってください。

    最終行を求める

    =COUNTA(A:A)

    見出しを含むなら1を引きます。空行があると正確でないので、確実にやるなら次の形です。

    =MAX(FILTER(ROW(A:A), A:A<>""))

    複数条件で数えたいとき

    COUNTAには条件を付けられません。COUNTIF / COUNTIFS を使ってください。

    =COUNTIF(A:A, "東京")
    =COUNTIFS(A:A, "東京", B:B, ">=1000")

    重複を除いて数える

    =COUNTA(UNIQUE(FILTER(A2:A100, A2:A100<>"")))

    UNIQUE で重複を除き、FILTER で空欄を除いてから数えています。

    COUNTBLANKとの関係

    COUNTBLANK は空欄を数えます。

    =COUNTBLANK(A2:A100)

    COUNTAとCOUNTBLANKを足しても、全体の件数にならないことがあります。 数式が返した "" を、COUNTAは「あり」、COUNTBLANKは「空欄」として、両方が数えてしまうためです。

    合計が合わないときは、この重複を疑ってください。

    Excelとの違い

    COUNTA・COUNT・COUNTBLANK ともに共通です。書式も挙動も同じで、空文字の扱いも同じです。

    まとめ

    • – 書式は =COUNTA(範囲)空欄以外すべてを数える
    • – 入力済みの行数を数えるなら COUNT ではなくCOUNTA
    • 数式が返した "" を1件として数えるのが最大の落とし穴
    • – 見た目通りに数えるなら =COUNTIF(範囲, "<>")
    • – 厳密な未入力は ISBLANK を使う

    関連する関数

  • SUMPRODUCT関数の使い方|掛けて足す、そして複数条件の集計

    SUMPRODUCTは、対応する要素を掛け合わせて、その合計を返す関数です。

    「単価 × 数量」を全行分まとめて合計する、というのが本来の用途です。ただし実務では、SUMIFS では書けない条件の集計に使われることのほうが多くなります。

    書式

    =SUMPRODUCT(範囲1, [範囲2], ...)

    範囲はすべて同じ大きさである必要があります。

    基本の動き

    A B
    1 単価 数量
    2 100 3
    3 200 2
    4 150 4
    =SUMPRODUCT(A2:A4, B2:B4)

    結果:1300(100×3 + 200×2 + 150×4)

    作業列に「金額」を作って SUM する必要がありません。列を1つ減らせます。

    掛け算がANDになる仕組み

    ここがSUMPRODUCTの本領です。

    TRUE は1、FALSE は0として扱われます。この性質を使うと、条件判定を掛け算で表現できます。

    =SUMPRODUCT((A2:A100="東京") * (B2:B100>=1000))
    • – 両方 TRUE → 1 × 1 = 1
    • – 片方 FALSE → 1 × 0 = 0

    つまり掛け算が ANDになり、合計が「条件に合う件数」になります。

    金額を合計するなら、値の範囲を掛けます。

    =SUMPRODUCT((A2:A100="東京") * (B2:B100>=1000) * C2:C100)

    条件に合う行だけ 1 × 金額、合わない行は 0 × 金額 = 0 になり、合計されます。

    同様に、足し算が OR になります。

    =SUMPRODUCT(((A2:A100="東京") + (A2:A100="大阪")) * C2:C100)

    括弧を忘れないでください。 + より * が先に計算されるため、括弧がないと意図が変わります。

    SUMIFSで書けるなら、そちらを使う

    上の例は SUMIFS でも書けます。

    =SUMIFS(C:C, A:A, "東京", B:B, ">=1000")

    読みやすさでは SUMIFS が上です。 処理も軽い。書けるならSUMIFSを使ってください。

    SUMPRODUCTを使うべきなのは、SUMIFSでは書けない場合だけです。

    SUMIFSでは書けない集計

    1. 条件に計算が入る

    「単価×数量が1000以上の行」のように、条件式の中に計算がある場合。

    =SUMPRODUCT((A2:A100 * B2:B100 >= 1000) * 1)

    SUMIFS の条件は文字列で書くため、こうした計算を含められません。

    2. 月ごとの集計を関数で導く

    =SUMPRODUCT((MONTH(A2:A100)=4) * C2:C100)

    日付から月を取り出して判定しています。SUMIFS では期間の上限下限で表現する必要がありますが、SUMPRODUCTなら直接書けます。

    3. 重複を除いた件数

    =SUMPRODUCT(1/COUNTIF(A2:A100, A2:A100))

    同じ値がn個あれば 1/n がn回足されて1になる、という仕組みです。

    範囲に空欄があると #DIV/0! になります。 空欄のない範囲に限定するか、次のように書きます。

    =SUMPRODUCT((A2:A100<>"") / COUNTIF(A2:A100, A2:A100 & ""))

    スプレッドシートなら UNIQUE のほうが簡単です。

    =COUNTA(UNIQUE(FILTER(A2:A100, A2:A100<>"")))

    4. 部分一致での集計

    =SUMPRODUCT(ISNUMBER(SEARCH("営業", B2:B100)) * C2:C100)

    SUMIF のワイルドカードでも書けますが、複数の条件と組み合わせるならこちらが素直です。

    5. 加重平均

    =SUMPRODUCT(A2:A100, B2:B100) / SUM(B2:B100)

    「単価 × 数量の合計 ÷ 数量の合計」=加重平均単価です。AVERAGE では出せません。

    注意点

    範囲の大きさを揃える

    すべての範囲が同じ行数でなければ #VALUE! になります。列全体(A:A)と A2:A100 を混ぜないでください。

    文字列が混ざると #VALUE!

    掛け算の対象に文字列があるとエラーになります。条件式で包むか、-- で数値化してください。

    =SUMPRODUCT(--(A2:A100="東京"))

    -- は「マイナスを2回かける」ことで TRUE/FALSE を1/0に変換する定番の書き方です。* 1 でも同じです。

    動作が重い

    SUMPRODUCTは範囲全体を計算します。列全体を指定して何本も置くと重くなります。範囲を実際に使う分だけに限定してください。

    Excelとの違い

    書式・挙動ともに共通です。-- による数値化も同じように使えます。

    Excelでは古くから「配列数式の代わり」としてSUMPRODUCTが多用されてきましたが、現在は SUMIFSFILTER で書けることが増えています。

    スプレッドシートでは QUERY FILTER ARRAYFORMULA があるため、SUMPRODUCTの出番はさらに少なくなります。

    =SUM(FILTER(C2:C100, A2:A100="東京", B2:B100>=1000))

    こちらのほうが読みやすい場面が多いので、まずこちらを検討してください。

    まとめ

    • – 書式は =SUMPRODUCT(範囲1, 範囲2)掛けて足す
    • 掛け算が AND、足し算が OR になる
    • SUMIFS で書けるなら、SUMIFSのほうが読みやすく軽い
    • – 出番は「条件に計算が入る」「加重平均」など、SUMIFSで書けない場合
    • – 範囲の大きさは必ず揃える
    • – スプレッドシートなら FILTERQUERY で代替できることが多い

    関連する関数

  • スプレッドシートの共有設定|権限と保護の使い分け

    スプレッドシートの最大の強みは共有と同時編集です。同時に、設定を間違えると情報が意図せず外に出るのもここです。

    このページでは、権限の違いと、実務で必要な保護の設定を整理します。

    3つの権限

    右上の「共有」ボタンから設定します。

    権限 できること
    閲覧者 見る・ダウンロード・コピー
    閲覧者(コメント可) 上記+コメントを付ける
    編集者 上記+編集・共有設定の変更

    編集者は共有設定も変更できます。 つまり、編集者に渡すということは「この人が誰にでも共有できる状態にする」ことを意味します。ここは意識しておく価値があります。

    リンク共有の危険性

    「一般的なアクセス」の設定が2種類あります。

    設定 意味
    制限付き 招待した人だけ
    リンクを知っている全員 URLを持つ誰でも

    「リンクを知っている全員」は、URLが転送されれば誰でも見られます。 Googleアカウントすら不要です。

    社内チャットに貼ったURLが社外に転送される、という事故は実際によく起きます。業務データでは「制限付き」を基本にしてください。

    「リンクを知っている全員」を使っていいのは、公開前提の資料だけです。

    誰に共有されているかを確認する

    共有ボタンを押すと、アクセス権を持つ人の一覧が出ます。

    定期的に確認してください。 退職者や、一時的に共有した外部の人が残っていることがあります。

    編集させたくないけど見せたい

    閲覧者にすれば編集できません。

    さらに、閲覧者のダウンロード・印刷・コピーを禁止することもできます。

    共有画面の歯車アイコン →「閲覧者と閲覧者(コメント可)に、ダウンロード、印刷、コピーの項目を表示する」のチェックを外します。

    ただし、これは完全な保護ではありません。 画面は見えているので、スクリーンショットは撮れますし、手で書き写すこともできます。「うっかり流出」を減らす効果はあるが、悪意には勝てないと理解しておいてください。

    本当に見せたくないデータは、そもそも共有しないのが唯一の対策です。

    シートの保護 ── 一部だけ編集させない

    編集者に渡しつつ、特定のシートや範囲だけ触らせないことができます。

    「データ → シートと範囲を保護」

    シート全体を保護する

    集計シートや設定シートを守るのに使います。

    「一部のセルを除く」を選べば、入力させたいセルだけ開けておくこともできます。

    範囲だけ保護する

    数式の入った列だけを守る、という使い方です。入力用の列は開いたまま、計算列だけロックできます。

    権限の設定

    保護した範囲には3つの設定ができます。

    設定 動き
    自分のみ 自分だけ編集できる
    カスタム 指定した人だけ編集できる
    警告を表示 誰でも編集できるが、確認ダイアログが出る

    「警告を表示」が実務では便利です。 完全に禁止すると運用が回らなくなることがありますが、警告があれば「うっかり触った」は防げます。

    注意:保護は編集者に対する制限です。 ファイルのオーナーと、保護を設定した人は常に編集できます。

    同時編集で困らないための工夫

    フィルタ表示を使う

    通常の「フィルタ」は全員の画面に影響します。 誰かが絞り込むと、他の人の画面も変わります。

    「データ → フィルタ表示 → 新しいフィルタ表示を作成」を使えば、自分だけに適用されます。複数人で使うファイルでは必ずこちらを使ってください。

    並べ替えに注意

    並べ替えは元データの順番を変えてしまいます。元に戻せません(履歴からは戻せます)。

    順番を変えずに並べ替えた結果を見たいなら、SORT 関数を別シートに置いてください。

    =SORT(データ!A2:D1000, 3, FALSE)

    元の表に手を触れずに、並べ替えた結果だけを見られます。

    変更履歴で追える

    「ファイル → 変更履歴 → 変更履歴を表示」で、いつ誰が何を変えたかが全部見られます。

    セルを右クリック →「編集履歴を表示」で、そのセルだけの履歴も見られます。「誰がこの数字を変えたのか」が特定できるので、トラブル時に有効です。

    通知を設定する

    「ツール → 通知設定」で、変更があったときにメールを受け取れます。

    • – 変更のたび
    • – 1日1回のまとめ

    重要なファイルには設定しておく価値があります。 意図しない変更に早く気づけます。

    公開の設定(要注意)

    「ファイル → 共有 → ウェブに公開」は、インターネット上の誰でもアクセスできる状態にする機能です。

    検索エンジンにインデックスされる可能性もあります。業務データでは絶対に使わないでください。

    既に公開されていないか確認するには、同じメニューを開いて「公開を停止」ボタンが出ていないかを見てください。

    共有前のチェックリスト

    外部に共有する前に確認する項目です。

    • – [ ] 非表示のシートに機密データが残っていないか
    • – [ ] 非表示の列・行にメモが残っていないか
    • – [ ] コメントに社内向けの記述が残っていないか
    • ] [IMPORTRANGE で別ファイルを参照していないか(参照先の権限も必要になる
    • – [ ] 「リンクを知っている全員」になっていないか

    非表示のシートは、閲覧者でも簡単に表示できます。 隠したつもりでも見えます。本当に見せたくないなら、削除してから共有してください。

    IMPORTRANGEを使っている場合

    IMPORTRANGE で別ファイルを参照しているシートを共有すると、相手が参照先ファイルへの閲覧権限を持っていないとデータが表示されません。

    「自分には見えるのに、相手には見えない」という相談の大半がこれです。参照先ファイルの共有設定も確認してください。

    まとめ

    • – 権限は閲覧者・コメント可・編集者の3段階。編集者は共有設定も変えられる
    • 「リンクを知っている全員」は転送で誰でも見られる。 業務データは「制限付き」
    • – 一部だけ守るなら「シートと範囲を保護」。「警告を表示」が実用的
    • – 同時編集ではフィルタ表示を使う(通常のフィルタは全員に影響)
    • 非表示のシートは隠れていない。 見せたくないなら削除する
    • IMPORTRANGE を使っていたら、参照先の権限も必要

    関連ページ

  • スプレッドシートの使い方|最初に覚える10のこと

    Googleスプレッドシートは、ブラウザで動く表計算ソフトです。Excelとほぼ同じことができ、加えて共有と同時編集に強いのが特徴です。

    このページでは、最初に押さえておくと後が楽になる10項目に絞って解説します。

    1. Excelとの違い

    まずここを理解しておくと混乱が減ります。

    Excel スプレッドシート
    保存 自分で保存 自動保存
    同時編集 制限あり 標準機能
    変更履歴 限定的 全履歴が残る
    動作の速さ 速い 大量データで重い
    関数 ほぼ共通 QUERY など独自関数あり
    オフライン 使える 設定が必要

    関数の9割は共通です。VLOOKUP SUMIF IF などはそのまま同じ書き方で動きます。

    スプレッドシート独自の強力な関数として、QUERY FILTER ARRAYFORMULA IMPORTRANGE があります。これらを覚えると、Excelでは面倒だった処理が短く書けます。

    2. 保存は不要、履歴は全部残る

    編集は自動で保存されます。保存ボタンはありません。

    そして「ファイル → 変更履歴 → 変更履歴を表示」で、いつ誰が何を変えたかが全部見られます。 過去の状態に戻すこともできます。

    間違えても元に戻せる——これがスプレッドシートで最も安心できる点です。大きな変更をする前に、履歴に名前を付けておくとさらに安全です。

    3. 共有と権限

    右上の「共有」ボタンから設定します。権限は3段階です。

    権限 できること
    閲覧者 見るだけ
    閲覧者(コメント可) コメントを付けられる
    編集者 編集できる

    「リンクを知っている全員」に設定すると、URLを持つ誰でもアクセスできます。 社外に転送されると誰でも見られてしまうので、業務データでは「特定のユーザー」を推奨します。

    編集させたくないけど数字は見せたい、という場合は「閲覧者」にしてください。

    4. セルの参照とシートの参照

    同じシート内なら、そのままセル番地を書きます。

    =A1 + B1

    別のシートなら、シート名と ! を付けます。

    =Sheet2!A1

    シート名にスペースが含まれる場合は、シングルクォートで囲みます。

    ='4月 売上'!A1

    別のファイルを参照するには IMPORTRANGE が必要です。詳しくは 別シートからデータを取得する方法 にまとめています。

    5. 絶対参照($)── 最初の壁

    数式を下や右にコピーすると、参照も一緒にずれます。ずらしたくない部分に $ を付けます。

    書き方 動き
    A1 縦にも横にもずれる
    $A1 列は固定、行はずれる
    A$1 行は固定、列はずれる
    $A$1 完全に固定

    F4 キー(Macは Fn + F4)で切り替えられます。

    判断の仕方はシンプルです。

    • – 下にコピーする → 行がずれてほしくないなら $ を行に
    • – 右にコピーする → 列がずれてほしくないなら $ を列に

    VLOOKUP の範囲や、集計表の見出し参照で必ず必要になります。

    6. データの入力規則

    「データ → データの入力規則」で、入力できる値を制限できます。

    • – プルダウン(選択肢から選ばせる)
    • – 数値の範囲
    • – 日付の範囲
    • – カスタム数式(重複禁止など)

    表記ゆれを防ぐ最も確実な方法です。「東京」「東京都」「トウキョウ」が混在すると、SUMIFCOUNTIF も正しく動きません。入力時に弾くのが最も安上がりです。

    詳しくは プルダウンの作り方 で扱っています。

    7. 条件付き書式

    「表示形式 → 条件付き書式」で、条件に合うセルの色を変えられます。

    「カスタム数式」を使うと、行全体に色を付けられます。

    =$D2 = "未処理"

    列だけ $ で固定するのがポイントです。行を固定しないことで、各行が個別に判定されます。

    期限切れを赤くするなら次の形です。

    =AND($E2 <> "", $E2 < TODAY())

    $E2 <> "" を入れているのは、空欄を期限切れと判定させないためです。これがないと未入力の行が全部赤くなります。

    8. フィルタと並べ替え

    「データ → フィルタを作成」で、列ごとに絞り込みができます。

    注意点が1つあります。 フィルタで絞り込んでも、SUM隠れた行も合計します。

    表示中のデータだけ集計したいなら SUBTOTAL を使ってください。

    =SUBTOTAL(109, C2:C1000)

    複数人で使うファイルでは「フィルタ表示」を使ってください。 通常のフィルタは全員に影響しますが、フィルタ表示は自分だけに適用されます。

    9. よく使うショートカット

    操作 Windows Mac
    今日の日付を入力 Ctrl + ; + ;
    絶対参照の切り替え F4 Fn + F4
    データの端まで選択 Ctrl + Shift + + Shift +
    行を挿入 Ctrl + Alt + = + Option + =
    値のみ貼り付け Ctrl + Shift + V + Shift + V
    検索と置換 Ctrl + H + Shift + H

    Ctrl + Shift + V(値のみ貼り付け)が最重要です。数式や書式を持ち込まずに値だけ貼れます。

    Ctrl + ; も覚えてください。 TODAY 関数は毎日値が変わるので、記録用の日付にはこちらを使います。

    10. 重くなったときの対処

    スプレッドシートは大量データで重くなります。効果の大きい順に挙げます。

    1. 1. IMPORTRANGE を1箇所にまとめる — 同じファイルを何度も読まない
    2. 2. 揮発性関数を減らすTODAY INDIRECT OFFSET は再計算が頻繁
    3. 3. 範囲を絞るA:Z ではなく A:D
    4. 4. 不要な行・列を削除する — 空でも計算対象になる
    5. 5. 条件付き書式を減らす — 範囲が広いと重い

    特に1番の効果が大きいです。読み込み専用のシートを1枚作り、そこに1回だけ IMPORTRANGE を書いてください。

    次に読むもの

    関数を覚えるなら、需要の多い順に次のあたりから始めるのが実用的です。

    • VLOOKUP / XLOOKUP — 表から値を探す
    • IF — 条件で表示を変える
    • SUMIF / COUNTIF — 条件付きの集計
    • QUERY — 抽出と集計をまとめて

    やりたいことから逆引きするなら 関数一覧 をご覧ください。

    まとめ

    • 保存は不要、履歴は全部残る。間違えても戻せる
    • – 共有は「特定のユーザー」が基本。リンク共有は転送に注意
    • $(絶対参照)は F4 で切り替え。最初の壁だがここを越えると楽になる
    • 入力規則で表記ゆれを防ぐのが最も安上がり
    • – フィルタ中の集計は SUM ではなく SUBTOTAL
    • – 重いときは IMPORTRANGE と揮発性関数を疑う

    関連ページ

  • スプレッドシートのチェックボックスの使い方|集計と色分けまで

    チェックボックスは、セルに ON / OFF のスイッチを置く機能です。

    Excelでは図形として扱われ、セルとの紐付けが面倒でしたが、スプレッドシートではセルの値そのものになります。この違いが集計のしやすさを生みます。

    作り方

    セルを選択して「挿入 → チェックボックス」。これだけです。

    範囲を選択してから実行すれば、まとめて挿入できます。

    削除するときは、セルを選択して Delete キーではなく、「データ → データの入力規則 → 削除」から行ってください。Delete だとチェックが外れるだけで、ボックス自体は残ります。

    中身は TRUE / FALSE

    ここが最も重要です。

    チェックボックスの実体は、TRUEFALSE という論理値です。図形ではなく、セルの値です。

    =A2            → TRUE または FALSE
    =IF(A2, "済", "未")   → チェック済みなら「済」

    IF(A2 = TRUE, ...) と書く必要はありません。IF(A2, ...) で足ります。

    この性質のおかげで、そのまま計算に使えます。

    チェック数を数える

    =COUNTIF(A2:A100, TRUE)

    TRUE はクォートで囲みません。文字列ではなく論理値だからです。

    未チェックを数えるなら次の形です。

    =COUNTIF(A2:A100, FALSE)

    進捗率を出すなら割ります。

    =COUNTIF(A2:A100, TRUE) / COUNTA(A2:A100)

    セルの表示形式を「パーセント」にすれば、進捗率が自動で更新されるタスクリストになります。

    チェックした行だけ集計する

    SUMIF の条件に使えます。

    =SUMIF($A$2:$A$100, TRUE, $C$2:$C$100)

    チェックが入っている行の金額だけを合計します。買い物リストや経費精算で使えます。

    複数条件なら SUMIFS です。

    =SUMIFS(C:C, A:A, TRUE, B:B, "食費")

    チェックした行だけ抽出する

    FILTER の条件にそのまま渡せます。

    =FILTER(B2:D100, A2:A100)

    = TRUE を書く必要はありません。 論理値をそのまま条件にできます。

    逆にチェックが入っていない行なら、NOT を使います。

    =FILTER(B2:D100, NOT(A2:A100))

    条件付き書式と連動させる

    チェックした行にグレーの背景を付けて、完了を視覚化できます。

    「表示形式 → 条件付き書式 → カスタム数式」に次を入れます。

    =$A2 = TRUE

    範囲を A2:E1000 にすれば、行全体に色が付きます。

    列だけを $ で固定するのがポイントです。行を固定($A$2)すると、全行がA2の値で判定されてしまいます。

    打ち消し線を付けたいなら、書式で「取り消し線」を選んでください。完了したタスクが視覚的に消えるので、リストとして使いやすくなります。

    チェックの値を変更する

    既定は TRUE / FALSE ですが、別の値に変えられます。

    「データ → データの入力規則 → チェックボックス → カスタムのセル値を使用する」

    チェック時を 完了、未チェック時を 未着手 にする、といった設定ができます。

    ただし、これをやると COUNTIF(A:A, TRUE) が動かなくなります。 集計する予定があるなら、既定の TRUE / FALSE のままにしておくほうが確実です。

    一括操作

    全部チェックする/外すには、範囲を選択して Space キーを押します。

    数式で制御することはできません。チェックボックスのセルに数式を入れると、チェックボックスが消えます。 手動入力専用と考えてください。

    「条件に応じて自動でチェックを入れたい」という要件は、チェックボックスでは実現できません。別のセルに IF で判定を出すか、Google Apps Script が必要になります。

    プルダウンとの使い分け

    状況 使うもの
    ON / OFF の2択 チェックボックス
    選択肢が3つ以上 プルダウン
    状態が「未着手→進行中→完了」 プルダウン
    クリック1回で切り替えたい チェックボックス

    チェックボックスは1クリックで切り替わるのが最大の利点です。プルダウンは開いて選ぶ2動作が必要になります。

    タスクリストのように頻繁に切り替えるものは、チェックボックスのほうが圧倒的に速くなります。

    実用例:進捗管理シート

    A B C D
    1 完了 タスク 担当 期限
    2 資料作成 山田 4/10
    3 レビュー 鈴木 4/15

    進捗率

    =COUNTIF(A2:A100, TRUE) / COUNTA(B2:B100)

    未完了かつ期限切れの件数

    =COUNTIFS(A2:A100, FALSE, D2:D100, "<"&TODAY())

    条件付き書式(完了はグレー+取り消し線)

    =$A2 = TRUE

    条件付き書式(未完了かつ期限切れは赤)

    =AND($A2 = FALSE, $D2 <> "", $D2 < TODAY())

    $D2 <> "" を入れているのは、期限が未入力の行を赤くしないためです。空欄は0として扱われ、TODAY より小さくなるので、これがないと未入力の行が全部赤くなります。

    よくある問題

    チェックボックスが消えた

    セルに数式や値を直接入力すると消えます。「挿入 → チェックボックス」でやり直してください。

    COUNTIFで数えられない

    • "TRUE"(クォート付き)で書いている → クォートを外す
    • – カスタムのセル値に変更している → その値で数える

    条件付き書式が全行に適用される

    参照が $A$2 になっています。$A2 にしてください。

    Deleteしてもボックスが残る

    「データ → データの入力規則 → 削除」から消してください。

    Excelとの違い

    扱いが根本的に違います。

    Excel スプレッドシート
    実体 図形(フォームコントロール) セルの値
    セルとの紐付け リンクセルの設定が必要 不要
    集計 リンクセルを参照 そのまま参照
    挿入 開発タブが必要 挿入メニューから

    Excelではチェックボックスが図形なので、値を使うには「リンクするセル」を設定する手間がありました。

    スプレッドシートはセルの値そのものなので、COUNTIFFILTER にそのまま渡せます。 この点はスプレッドシートのほうが圧倒的に扱いやすくなっています。

    まとめ

    • – 「挿入 → チェックボックス」で作る
    • 実体は TRUE / FALSE の論理値。そのまま計算に使える
    • – 数えるのは =COUNTIF(A:A, TRUE)クォートは付けない
    • FILTER の条件にそのまま渡せる= TRUE 不要)
    • – 条件付き書式は =$A2 = TRUE列だけ固定
    • 数式で自動チェックはできない。手動入力専用

    関連ページ

  • スプレッドシートのプルダウンの作り方|連動プルダウンまで

    プルダウン(ドロップダウンリスト)は、選択肢から選ばせて入力させる機能です。

    見た目の問題ではありません。表記ゆれを防ぐ最も確実な方法です。「東京」「東京都」「トウキョウ」が混在すると、SUMIFCOUNTIF も正しく動かなくなります。入力時に弾くのが最も安上がりです。

    作り方(2通り)

    「データ → データの入力規則」を開き、条件で「プルダウン」を選びます。

    方法1:選択肢を直接入力する

    選択肢をその場で打ち込みます。

    未処理, 処理中, 完了

    手軽ですが、選択肢を変えるたびに設定を開く必要があります。

    方法2:別シートのリストを参照する(推奨)

    「プルダウン(範囲内)」を選び、リストの範囲を指定します。

    =マスタ!A2:A100

    リストに追加するだけで選択肢が増えます。 設定画面を開く必要がありません。

    複数人で使うファイルや、選択肢が増減するものは必ずこちらにしてください。

    選択肢が増えても直さない作り方

    範囲を A2:A100 のように広めに取ると、空欄も選択肢として並んでしまう環境があります。

    これを避けるには、FILTER で空を除いた作業列を作り、そこを参照します。

    マスタ!B2:  =FILTER(A2:A100, A2:A100<>"")
    入力規則:    =マスタ!B2:B100

    リストに追記すれば自動で反映され、空欄も出ません。

    重複を除きたいなら UNIQUE を重ねます。

    =UNIQUE(FILTER(A2:A100, A2:A100<>""))

    「無効なデータ」の扱い

    入力規則には2つのモードがあります。

    設定 動き
    警告を表示 リスト外も入力できる(赤い印が付く)
    入力を拒否 リスト外は入力できない

    表記ゆれを防ぐのが目的なら「入力を拒否」にしてください。 警告だけだと、無視して入力されます。

    ただし、既にデータが入っている列に後から設定しても、既存の値は変わりません。 赤い印が付くだけです。設定前のデータは別途整える必要があります。

    連動プルダウンの作り方

    「大分類を選ぶと、小分類の選択肢が変わる」という仕組みです。INDIRECT を使います。

    手順

    1. 大分類のリストを作る

    マスタシートのA列に「果物」「野菜」と並べます。

    2. 小分類ごとに名前付き範囲を作る

    • – 果物のリスト(りんご、みかん…)を選択 → 「データ → 名前付き範囲」→ 名前を 果物
    • – 野菜のリスト(にんじん、キャベツ…)を選択 → 名前を 野菜

    名前付き範囲の名前と、大分類の値を完全に一致させるのが必須です。

    3. 大分類のセルにプルダウンを設定

    範囲はマスタのA列。

    4. 小分類のセルの入力規則をカスタム数式にする

    =INDIRECT($A2)

    A2で「果物」を選ぶと、果物 という名前付き範囲がリストになります。

    注意点

    • 名前付き範囲にスペースや記号は使えません。 大分類の値も揃えてください
    • – 大分類を変更しても、小分類の値は自動で消えません。 手動でクリアするか、条件付き書式で不整合を目立たせてください
    • INDIRECT は揮発性関数なので、数百行に置くと重くなります

    行数が多い場合は、連動プルダウンを諦めて単一のリストに「果物:りんご」のような形で並べるほうが軽くて確実なことがあります。

    選択肢によって色を変える

    プルダウン自体に色を設定できます(新しいUIでは入力規則の画面から直接指定できます)。

    行全体に色を付けたいなら、条件付き書式を使ってください。

    =$D2 = "完了"

    列だけを $ で固定するのがポイントです。範囲を A2:F1000 にすれば、D列が「完了」の行全体に色が付きます。

    ステータスごとに色を分けるなら、条件付き書式のルールを複数追加します。上から順に評価されるので、優先したいものを上に置いてください。

    チェックボックスとの使い分け

    状況 使うもの
    選択肢が3つ以上 プルダウン
    ON / OFF の2択 チェックボックス
    集計したい どちらでも(チェックボックスは TRUE/FALSE で数えやすい)

    集計との組み合わせ

    プルダウンで入力を統一すると、集計が確実になります。

    =COUNTIF(D:D, "未処理")
    =SUMIFS(C:C, D:D, "完了")

    ステータスごとの件数を一度に出すなら QUERY が便利です。

    =QUERY(A:D, "select D, count(A) where D <> '' group by D", 1)

    選択肢が増えても数式を直す必要がありません。

    よくある問題

    プルダウンが表示されない

    • – セルの入力規則が設定されていない
    • – 「セル内にドロップダウンリストを表示」のチェックが外れている(古いUI)

    選択肢に空欄が並ぶ

    範囲を広く取りすぎています。FILTER で空を除いた作業列を参照してください。

    リストを追加したのに反映されない

    入力規則の範囲が、追加した行を含んでいません。範囲を広めに取り直すか、FILTER を使った作り方に変えてください。

    連動プルダウンが動かない

    • – 名前付き範囲の名前と、大分類の値が一致していない
    • – 名前にスペースや記号が含まれている
    • – カスタム数式の参照が $A2 ではなく $A$2 になっている(行を固定すると全行が同じリストになります)

    Excelとの違い

    考え方は同じですが、細部が異なります。

    Excel スプレッドシート
    設定場所 データの入力規則 データの入力規則
    リスト参照 名前付き範囲か直接指定 範囲を直接指定できる
    連動 INDIRECT + 名前付き範囲 同じ
    選択肢の色分け 条件付き書式のみ 入力規則で直接指定可

    Excelでは別シートのリストを参照するのに名前付き範囲が必要でしたが、スプレッドシートは範囲を直接指定できます。設定が簡単なのはスプレッドシートです。

    まとめ

    • – プルダウンは見た目ではなく、表記ゆれを防ぐための機能
    • 別シートのリストを参照する作り方にすると、追加が楽
    • – 空欄が並ぶなら FILTER で作業列を作る
    • 「入力を拒否」に設定しないと弾けない
    • – 連動プルダウンは INDIRECT +名前付き範囲。名前と値を完全一致させる
    • – 入力が統一されると、COUNTIFQUERY が確実に動く

    関連ページ