主要関数カタログ
業務で頻出する関数を集計・論理・検索参照・テキスト・日付時刻・数値端数の6群に整理。各群を「用途→代表関数→構文→具体例→注意」で解説し、いつ何を使うかの地図と関数の選び方まで示す実践カタログ。
関数は「暗記」するものではなく、「いつ何を使うか」の地図を持つものです。 業務で本当に使う関数は、実はそれほど多くありません。本章は頻出関数を群(カテゴリ)ごとに整理し、各群を「用途 → 代表関数 → 構文 → 具体例 → 注意」の流れで並べたカタログです。数式の書き方そのものや参照の固定($)は 第4章 関数の文法と参照 で扱っているので、ここでは「どの場面でどの関数を選ぶか」に重心を置きます。
本章で扱う関数群は次の6つです。
- 集計 — SUM, AVERAGE, COUNT 系, MAX/MIN, SUMIF(S), COUNTIF(S), AVERAGEIF(S), SUBTOTAL
- 論理 — IF, ネストIF と IFS, AND/OR/NOT, SWITCH, IFERROR
- 検索・参照 — VLOOKUP, HLOOKUP, INDEX+MATCH, XLOOKUP
- テキスト — LEFT/RIGHT/MID, LEN, TRIM, UPPER/LOWER, SUBSTITUTE, REPLACE, TEXT, 連結, SPLIT, REGEX 系
- 日付・時刻 — TODAY/NOW, DATE, YEAR/MONTH/DAY, EDATE, EOMONTH, DATEDIF, WEEKDAY, WORKDAY, NETWORKDAYS
- 数値・端数 — ROUND 系, INT, MOD, CEILING/FLOOR, ABS
数式は日本語ロケール前提で、引数の区切りは カンマ(,) です。迷ったら一次情報の 関数リスト(公式) が頼りになります。
1. 集計の関数
数を「合計する・数える・平均する・最大最小を取る」群です。まずは無条件の基本形を押さえ、次に「条件付き」へ進みます。
基本の集計
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| SUM | 合計 | SUM(範囲) | =SUM(B2:B100) |
| AVERAGE | 平均 | AVERAGE(範囲) | =AVERAGE(B2:B100) |
| COUNT | 数値の個数を数える | COUNT(範囲) | =COUNT(B2:B100) |
| COUNTA | 空でないセルの個数 | COUNTA(範囲) | =COUNTA(A2:A100) |
| COUNTBLANK | 空白セルの個数 | COUNTBLANK(範囲) | =COUNTBLANK(B2:B100) |
| MAX | 最大値 | MAX(範囲) | =MAX(B2:B100) |
| MIN | 最小値 | MIN(範囲) | =MIN(B2:B100) |
COUNT と COUNTA の違いは事故の元になりやすいので明確に。COUNT は 数値が入ったセルだけ を数えます。文字列や空白は無視されます。一方 COUNTA は 文字でも数値でも、とにかく中身があれば 数えます。「データ件数(行数)を数えたい」なら、文字も含む COUNTA を使うのが基本です。
条件付き集計(ここが実務の本丸)
「特定の条件に合う行だけを合計/集計する」のが、業務でいちばん使う技です。〜IF は条件1つ、末尾に S が付く 〜IFS は条件を複数指定できます。
| 関数 | 用途 | 構文 |
|---|---|---|
| SUMIF | 1条件で合計 | SUMIF(条件範囲, 条件, 合計範囲) |
| SUMIFS | 複数条件で合計 | SUMIFS(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, …) |
| COUNTIF | 1条件で個数 | COUNTIF(範囲, 条件) |
| COUNTIFS | 複数条件で個数 | COUNTIFS(条件範囲1, 条件1, 条件範囲2, 条件2, …) |
| AVERAGEIF | 1条件で平均 | AVERAGEIF(条件範囲, 条件, 平均範囲) |
| AVERAGEIFS | 複数条件で平均 | AVERAGEIFS(平均範囲, 条件範囲1, 条件1, …) |
| MAXIFS / MINIFS | 複数条件での最大 / 最小 | MAXIFS(最大範囲, 条件範囲1, 条件1, …) |
条件の書き方にはコツがあります。完全一致なら値をそのまま、比較や部分一致なら 演算子やワイルドカードを文字列として 渡します。
売上表(B列=部署, C列=金額, D列=日付)での集計。
=SUMIF(B2:B100, "営業部", C2:C100) — 部署が「営業部」の合計
=COUNTIF(C2:C100, ">=10000") — 1万以上の件数(比較は文字列で囲む)
=COUNTIF(B2:B100, "*営業*") — 「営業」を含む部署の件数(* は任意個の文字、? は任意の1文字)
=SUMIFS(C2:C100, B2:B100, "営業部", D2:D100, ">="&DATE(2026,1,1)) — 営業部かつ今年以降の合計
最後の例の ">="&DATE(2026,1,1) のように、演算子を文字列にしてセル値や関数結果と & でつなぐ 書き方は頻出です。">="&G1 のようにセル参照と組み合わせれば、条件を画面から動的に変えられます。
SUBTOTAL — フィルタと相性のよい集計
SUBTOTAL は「集計の方法を番号で指定する」関数です。最大の特徴は、フィルタで非表示になった行を除いて集計できる こと。SUM はフィルタで隠れた行も足してしまいますが、SUBTOTAL の 9(合計)などはフィルタ後の見えている行だけを対象にできます。なお 9 番台はフィルタで隠れた行のみを除外、109 のような 1xx 番台は「手動で非表示にした行」も加えて除外します(フィルタだけなら結果は同じになります)。
| 構文 | 意味 |
|---|---|
SUBTOTAL(集計方法, 範囲) | 集計方法は番号。1=平均, 2=COUNT, 3=COUNTA, 9=合計, 4=最大, 5=最小 など |
=SUBTOTAL(9, C2:C100) — フィルタで絞り込んだ「見えている行」だけを合計=SUM(C2:C100) — フィルタで隠した行も合計に含めてしまう 順位・上位・積和 — RANK / LARGE / SUMPRODUCT
「N番目に大きい値」「順位」「重み付き合計」など、集計の一歩進んだ道具です。
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| MEDIAN | 中央値 | MEDIAN(範囲) | =MEDIAN(B2:B100) |
| LARGE / SMALL | N番目に大きい / 小さい値 | LARGE(範囲, N) | =LARGE(B2:B100, 3)(3番目に大きい値) |
| RANK | 範囲内での順位 | RANK(値, 範囲, [昇順]) | =RANK(B2, $B$2:$B$100)(既定は降順=大きいほど1位) |
| SUMPRODUCT | 対応要素を掛けてから合計(加重和・複数条件集計) | SUMPRODUCT(範囲1, 範囲2, …) | =SUMPRODUCT(B2:B10, C2:C10) |
| ROWS / COLUMNS | 範囲の行数 / 列数 | ROWS(範囲) | =ROWS(A2:A100) |
SUMPRODUCT は「単価×数量の合計」のような 加重合計 に使えるほか、条件式を掛け合わせて 複数条件の件数・合計 も出せます(=SUMPRODUCT((A2:A10="東京")*(B2:B10>=100)) で「東京かつ100以上」の件数)。RANK は同値があると同順位になり、次の順位が飛ぶ点に注意します。
2. 論理の関数
「条件によって結果を変える」「複数条件を組み合わせる」群です。
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| IF | 条件で2分岐 | IF(条件, 真の値, 偽の値) | =IF(C2>=10000, "達成", "未達") |
| IFS | 多分岐(条件を上から判定) | IFS(条件1, 値1, 条件2, 値2, …) | 下記参照 |
| AND | すべて満たすか | AND(条件1, 条件2, …) | =AND(C2>0, D2<>"") |
| OR | どれか満たすか | OR(条件1, 条件2, …) | =OR(B2="A", B2="B") |
| NOT | 真偽を反転 | NOT(条件) | =NOT(ISBLANK(A2)) |
| SWITCH | 値ごとに対応を返す | SWITCH(式, 値1, 結果1, …, 既定値) | 下記参照 |
| IFERROR | エラー時の代替を返す | IFERROR(式, エラー時の値) | =IFERROR(A2/B2, 0) |
ネストIF と IFS の使い分け
分岐が3つ以上になると、IF を入れ子(ネスト)にできますが、深くなるほど読めなくなります。3分岐以上は IFS を使う のが定石です。IFS は「条件と値のペア」を上から順に判定し、最初に真になったものを返します。
点数(B2)を評価に変換する。
=IF(B2>=80,"A",IF(B2>=60,"B",IF(B2>=40,"C","D"))) — 括弧が深くて壊しやすい
=IFS(B2>=80,"A", B2>=60,"B", B2>=40,"C", TRUE,"D") — 上から判定、TRUE が「それ以外」
IFS で「どの条件にも当てはまらない場合」を受けるには、最後に TRUE を条件にした行 を置きます。これが「else(それ以外)」の役割です。値そのもので分岐するなら SWITCH がさらに簡潔です。
=SWITCH(B2, "東", "東日本", "西", "西日本", "その他") — B2の値ごとに対応を返す。末尾は既定値 AND / OR / NOT と IFERROR
AND / OR は単独でも TRUE/FALSE を返しますが、多くは IF の条件部分に入れて使います。=IF(AND(C2>0, D2<>""), "OK", "確認") のように「複数条件をすべて満たすときだけOK」を表現できます。
IFERROR はエラー処理の定番です。VLOOKUP などで「見つからない」ときの #N/A を、空文字や 0、任意のメッセージに置き換えられます。
3. 検索・参照の関数
「あるキー(商品コードなど)に対応する値を、別の表から引っ張ってくる」群です。ビジネスで最も価値が高く、同時に最も事故が多い領域です。
VLOOKUP — 基本だが落とし穴も多い
VLOOKUP は「表の左端の列でキーを探し、同じ行の右側にある指定列の値を返す」関数です。
| 構文 | VLOOKUP(検索値, 範囲, 列番号, 検索の型) |
|---|---|
| 検索の型 | FALSE(完全一致・推奨)/ TRUE(近似一致・要ソート) |
商品マスタ(A列=コード, B列=商品名, C列=単価)からコードで単価を引く。
=VLOOKUP(F2, マスタ!A:C, 3, FALSE) — コードF2を探し、3列目(単価)を返す。完全一致は FALSE
HLOOKUP は VLOOKUP の横版で、「表の最上行でキーを探し、同じ列の下方向にある値を返す」関数です(HLOOKUP(検索値, 範囲, 行番号, 検索の型))。データは縦持ちが基本なので出番は多くありませんが、横方向の表を引くときに使います。
INDEX + MATCH — 柔軟で壊れにくい
INDEX と MATCH の組み合わせは、VLOOKUP の弱点をほぼ解消します。MATCH で「キーが何行目(何番目)か」を求め、INDEX で「その位置の値」を取り出します。
| 関数 | 構文 | 役割 |
|---|---|---|
| MATCH | MATCH(検索値, 検索範囲, 0) | 一致する位置(番号)を返す。0 は完全一致 |
| INDEX | INDEX(範囲, 行番号, 列番号) | 範囲内の指定位置の値を返す |
A列=商品名, B列=コード の表で、コード(F2)から左の商品名を引く。
=INDEX(A:A, MATCH(F2, B:B, 0)) — B列でF2の位置を探し、その位置のA列を返す。左方向もOK
VLOOKUP(F2, A:B, ?, FALSE) — キー(B列)の左にある商品名は引けない
INDEX+MATCH の強みは、列を番号でなく「列そのもの」で指定する こと。表の途中に列を挿入してもズレません。VLOOKUP の「列番号がもろい」問題が起きないのです。
XLOOKUP — 新しく、強力
XLOOKUP は Google スプレッドシートで利用可能な比較的新しい関数(2022年頃に導入)で、VLOOKUP と INDEX+MATCH の良いところを1つにまとめたものです。
| 構文 | XLOOKUP(検索値, 検索範囲, 結果範囲, [見つからない場合], [一致モード], [検索モード]) |
|---|
- 検索範囲と結果範囲を別々に指定するため、左右どちらの方向にも引けます。
- 見つからない場合の値を引数で直接指定できるので、
IFERRORで包む必要がありません。 - 検索モードで 末尾から検索(最後に一致したものを取る)なども指定できます。
=XLOOKUP(F2, B:B, A:A, "該当なし") — B列でF2を探し対応するA列を返す。無ければ「該当なし」=XLOOKUP(F2, コード列, 単価列) — 列番号を使わないので列挿入に強い いつどれを使うか — 検索関数の比較
| 観点 | VLOOKUP | INDEX+MATCH | XLOOKUP |
|---|---|---|---|
| 左方向に引く | ✕ 不可 | ○ 可能 | ○ 可能 |
| 列挿入への強さ | ✕ 列番号がずれる | ○ 強い | ○ 強い |
| 見つからない時の既定 | IFERROR 等で別途処理 | 同左 | △ 引数で直接指定できる |
| 書きやすさ | ○ 直感的 | △ 2関数の組合せ | ○ 1関数で完結 |
| 古い環境での通用 | ○ どこでも | ○ どこでも | △ 新しめの関数 |
XMATCH / CHOOSE / INDIRECT / LOOKUP — その他の検索・参照
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| XMATCH | 一致する位置(番号)を返す MATCH の新版 | XMATCH(検索値, 検索範囲, [一致モード], [検索モード]) | =INDEX(A:A, XMATCH(F2, B:B)) |
| CHOOSE | 番号に対応する値を選ぶ | CHOOSE(番号, 値1, 値2, …) | =CHOOSE(2, "月","火","水") → 火 |
| INDIRECT | 文字列をセル参照に変換 | INDIRECT(参照文字列) | =SUM(INDIRECT("B2:B"&G1)) |
| LOOKUP | 1行/1列での近似検索(要・昇順) | LOOKUP(検索値, 検索範囲, [結果範囲]) | =LOOKUP(F2, A2:A10, B2:B10) |
XMATCH は MATCH の上位版で、=INDEX(結果列, XMATCH(キー, 検索列)) のように使うと左右どちらの方向にも引け、XLOOKUP と同等の柔軟さになります。INDIRECT は「文字列で組み立てた範囲」を参照に変える関数で、範囲を動的に変えられる反面、参照関係が追いにくくなるため多用は禁物です。
4. テキストの関数
文字列を「取り出す・整える・結合する・分ける」群です。表記ゆれの除去やコード分解で活躍します。
取り出し・長さ・整形
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| LEFT / RIGHT | 左 / 右から n 文字 | LEFT(文字列, 文字数) | =LEFT(A2, 3) |
| MID | 途中から n 文字 | MID(文字列, 開始位置, 文字数) | =MID(A2, 4, 2) |
| LEN | 文字数を数える | LEN(文字列) | =LEN(A2) |
| TRIM | 前後・連続の余分な空白を除去 | TRIM(文字列) | =TRIM(A2) |
| UPPER / LOWER | 大文字 / 小文字に変換 | UPPER(文字列) | =UPPER(A2) |
| SUBSTITUTE | 指定の文字列を置換 | SUBSTITUTE(文字列, 検索, 置換) | =SUBSTITUTE(A2, "-", "") |
| REPLACE | 位置を指定して置換 | REPLACE(文字列, 開始位置, 文字数, 新文字列) | =REPLACE(A2, 1, 3, "JPN") |
| FIND | 文字の位置を探す(大小区別あり) | FIND(検索文字, 対象, [開始位置]) | =FIND("-", A2) |
| SEARCH | 文字の位置を探す(大小区別なし) | SEARCH(検索文字, 対象, [開始位置]) | =SEARCH("@", A2) |
| VALUE | 数字の文字列を数値に変換 | VALUE(文字列) | =VALUE("1,200") → 1200 |
| ASC | 全角の英数字・カナを半角に | ASC(文字列) | =ASC("ABC123") → ABC123 |
| JIS | 半角の英数字・カナを全角に | JIS(文字列) | =JIS("ABC") → ABC |
SUBSTITUTE と REPLACE は似ていますが、SUBSTITUTE は「文字の中身」で置換(ハイフンを全部消す等)、REPLACE は「位置」で置換(先頭3文字を入れ替える等)します。表記ゆれ掃除では SUBSTITUTE のほうが出番が多いです。
TEXT — 数値を「書式付きの文字列」に
TEXT は、数値や日付を 指定の書式の文字列 に変換します。表示形式(見た目だけ変える)と違い、文字列そのもの を作るので、連結や帳票の文面づくりに使えます。
=TEXT(1234567, "#,##0") → 1,234,567(桁区切りの文字列)=TEXT(A2, "yyyy年m月d日") → 2026年6月3日(日付を和文表記の文字列に)="請求額は"&TEXT(C2,"¥#,##0")&"です" → 請求額は¥1,200です 書式記号の 0 と # は似て非なるものです。0 は桁が無くても必ず 0 を表示(=TEXT(5, "00") → 05)、# は有効な桁だけを表示(不要な 0 を出さない)。#,##0 は「3桁ごとにカンマ・整数部は最低1桁」を意味し、桁区切りの定番書式です。
連結 — & / CONCATENATE / TEXTJOIN
文字列をつなぐ基本は & 演算子 です。=A2&"様" のように直感的に書けます。関数で書くなら CONCATENATE、区切り文字を挟んで一気につなぐ なら TEXTJOIN が便利です。
| 関数 | 用途 | 構文 |
|---|---|---|
& | 単純連結 | =A2&B2 |
| CONCATENATE | 関数形式の連結 | CONCATENATE(文字列1, 文字列2, …) |
| TEXTJOIN | 区切り文字付きで連結(空セルの扱いを選べる) | TEXTJOIN(区切り文字, 空を無視するか, 範囲…) |
=TEXTJOIN(", ", TRUE, A2:D2) — A2〜D2を「, 」でつなぐ。空セルは無視(第2引数 TRUE) 分割と正規表現
SPLIT は1セルの文字列を 区切り文字で複数セルに分解 します。REGEXEXTRACT / REGEXMATCH / REGEXREPLACE は正規表現でパターンを抽出・判定・置換する強力な3関数です。
| 関数 | 用途 | 構文(概略) |
|---|---|---|
| SPLIT | 区切りで分割 | SPLIT(文字列, 区切り文字) |
| REGEXEXTRACT | パターンに合う部分を取り出す | REGEXEXTRACT(文字列, 正規表現) |
| REGEXMATCH | パターンに合うかを判定 | REGEXMATCH(文字列, 正規表現) |
| REGEXREPLACE | パターンを置換 | REGEXREPLACE(文字列, 正規表現, 置換) |
正規表現は強力な反面、慣れが要ります。分割や抽出を使った 本格的なデータ整形 は 第8章 データ整形 でまとめて扱います。正規表現そのものを基礎から完全に理解したい人は、専用章 正規表現 完全ガイド(RE2) に、使える記号の早見表・便利なパターン集・「RE2に無い機能」までまとめてあります。ここでは「こういう道具がある」とだけ覚えておけば十分です。
5. 日付・時刻の関数
スプレッドシートの日付は、内部的には シリアル値(1日=1の連番。時刻はその小数部)です。だから日付どうしを引き算すると日数が出ます。この前提を押さえると、日付関数は一気に分かりやすくなります。
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| TODAY | 今日の日付 | TODAY() | =TODAY() |
| NOW | 現在の日時 | NOW() | =NOW() |
| DATE | 年月日から日付を作る | DATE(年, 月, 日) | =DATE(2026,6,3) |
| YEAR / MONTH / DAY | 年 / 月 / 日を取り出す | YEAR(日付) | =MONTH(A2) |
| EDATE | n か月後 / 前の同日 | EDATE(日付, 月数) | =EDATE(A2, 3) |
| EOMONTH | n か月後 / 前の月末 | EOMONTH(日付, 月数) | =EOMONTH(A2, 0) |
| WEEKDAY | 曜日を番号で返す | WEEKDAY(日付, 種類) | =WEEKDAY(A2, 2) |
| WORKDAY | n 営業日後の日付 | WORKDAY(開始日, 日数, [祝日]) | =WORKDAY(A2, 5) |
| NETWORKDAYS | 期間内の営業日数 | NETWORKDAYS(開始日, 終了日, [祝日]) | =NETWORKDAYS(A2, B2) |
| WEEKNUM | その日が年の第何週か | WEEKNUM(日付, [週の基準]) | =WEEKNUM(A2) |
| DATEDIF | 2日付の差(年/月/日) | DATEDIF(開始日, 終了日, 単位) | =DATEDIF(A2, B2, "Y") |
| DATEVALUE | 日付文字列を日付(シリアル値)に変換 | DATEVALUE(日付文字列) | =DATEVALUE("2026-03-15") |
EDATE と EOMONTH は請求・締めの計算で重宝します。=EOMONTH(A2, 0) は「その月の月末」、=EOMONTH(A2, 1) は「翌月末」です。WORKDAY / NETWORKDAYS は土日(と指定した祝日)を除いて数えるので、納期や稼働日数の計算に向きます。
6. 数値・端数の関数
「丸める・整える・余りを取る」群です。表示形式の丸めは見た目だけですが、ここで扱う関数は 値そのもの を変えます。
| 関数 | 用途 | 構文 | 例 |
|---|---|---|---|
| ROUND | 四捨五入 | ROUND(数値, 桁数) | =ROUND(123.456, 1) → 123.5 |
| ROUNDUP | 切り上げ | ROUNDUP(数値, 桁数) | =ROUNDUP(123.41, 1) → 123.5 |
| ROUNDDOWN | 切り捨て | ROUNDDOWN(数値, 桁数) | =ROUNDDOWN(123.49, 1) → 123.4 |
| INT | 小数を切り捨てて整数に | INT(数値) | =INT(3.9) → 3 |
| MOD | 割った余り | MOD(数値, 除数) | =MOD(7, 3) → 1 |
| CEILING | 基準値の倍数に切り上げ | CEILING(数値, 基準値) | =CEILING(23, 10) → 30 |
| FLOOR | 基準値の倍数に切り下げ | FLOOR(数値, 基準値) | =FLOOR(23, 10) → 20 |
| ABS | 絶対値 | ABS(数値) | =ABS(-5) → 5 |
桁数の指定がポイントです。ROUND(値, 0) で整数に、ROUND(値, 1) で小数1桁に、ROUND(値, -2) のように マイナスを指定すると百の位などで丸め られます(=ROUND(1234, -2) → 1200)。MOD は「偶数行だけ色を変える」「n 個ごとに区切る」といった判定にも応用できます。
関数の選び方 — 用途からの逆引き
最後に「やりたいこと」から関数へたどる地図です。迷ったらここから入ってください。
| やりたいこと | 使う関数 |
|---|---|
| 条件に合う行だけ合計/件数/平均したい | SUMIFS / COUNTIFS / AVERAGEIFS(複数形に統一すると順序が安定) |
| フィルタで絞った「見えている行」だけ集計したい | SUBTOTAL |
| 条件で表示を出し分けたい(2分岐) | IF |
| 3つ以上に分岐したい | IFS(末尾に TRUE で「それ以外」) / 値で分けるなら SWITCH |
| 別の表からキーで値を引きたい | まず XLOOKUP、無ければ INDEX+MATCH、単純な右引きのみ VLOOKUP |
エラー(#N/A 等)を見せたくない | IFERROR / #N/A だけなら IFNA |
| 文字から一部を取り出す/掃除する | LEFT・MID・RIGHT・TRIM・SUBSTITUTE |
| 数値や日付を書式付きの文字列にしたい | TEXT |
| 営業日・月末・n か月後を求めたい | WORKDAY・NETWORKDAYS・EOMONTH・EDATE |
| 値そのものを丸めたい | ROUND / ROUNDUP / ROUNDDOWN |
引くなら XLOOKUP
左右どちらも引け、列挿入に強く、見つからない時も引数で指定可。古い環境向けは INDEX+MATCH が堅実。
条件集計は IFS 系
SUMIFS / COUNTIFS に統一すると引数順が安定。比較・部分一致は条件を文字列で渡す。
迷ったら公式リスト
利用可否や引数に迷ったら関数リスト(公式)で一次確認。捏造より確認が速い。
ここまでで、業務頻出の関数を「いつ何を使うか」の地図として持てました。とはいえ、近年のスプレッドシートは1つの数式で範囲全体を返す 配列・スピル の時代に入っています。次は 第6章 配列・スピル時代の関数 で、ARRAYFORMULA や QUERY といった「1本で表を動かす」関数へ進みましょう。