スプレッドシート関数おすすめ15選|Excel比較付き完全ガイド

Googleスプレッドシートには400以上の関数がありますが、実務で本当に使う関数は20〜30個程度。この記事では「これだけ覚えれば業務の9割をカバーできる」厳選15関数をレベル別に紹介します!
- ExcelとGoogleスプレッドシートの関数の違い
- 初心者がまず覚えるべき基本関数5選(SUM・IF・VLOOKUP・COUNTIF・TEXTJOIN)
- 中級者向け|業務効率を劇的に上げる関数5選(QUERY・ARRAYFORMULA・IMPORTRANGE・FILTER・UNIQUE)
- 上級者向け|自動化・高度なデータ処理の関数5選(REGEX・GOOGLEFINANCE・SPARKLINE・IMAGE・LAMBDA)
- Excel関数との完全比較表
- GAS連携で関数の限界を突破する方法
スプレッドシート関数を使いこなすための基礎知識
Googleスプレッドシートには400以上の組み込み関数があります。Excelの関数と共通するものも多いですが、スプレッドシートならではの独自関数も多数用意されています。まずは両者の違いと、スプレッドシートの関数入力の基本を押さえましょう。
Excelとスプレッドシートの関数の違い
ExcelとGoogleスプレッドシートの関数には、以下の3つの大きな違いがあります。
| 比較項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 関数の総数 | 約400以上 | 約500以上 |
| 独自関数 | QUERY, ARRAYFORMULA, IMPORTRANGE, GOOGLEFINANCE, IMAGE, SPARKLINEなど | XLOOKUP(先行導入), Power Query連携, VBA関数など |
| 区切り文字 | カンマ(,) | 日本語版はセミコロン(;)の場合あり |
| 配列数式 | ARRAYFORMULAで明示的に指定 | Microsoft 365はスピル(自動展開) |
| 外部データ連携 | IMPORTRANGE, IMPORTDATA, IMPORTHTML等 | Power Query(GUIベース) |
最大の違いはQUERY関数とIMPORT系関数の存在です。これらはExcelには無い関数で、スプレッドシートの大きな強みになっています。逆にExcelの方が充実しているのは、VBAによるカスタム関数やPower Query連携です。
スプレッドシート固有の関数一覧
Googleスプレッドシートにのみ存在する主要な関数をまとめました。これらはExcelでは使えないため、スプレッドシートならではの活用法を覚えておくと業務の幅が広がります。
| 関数名 | 機能 | カテゴリ |
|---|---|---|
| QUERY | SQL風の構文でデータ検索・集計・並び替え | データ操作 |
| ARRAYFORMULA | 1つの数式で列全体に一括適用 | 配列処理 |
| IMPORTRANGE | 別のスプレッドシートからデータを取得 | 外部連携 |
| IMPORTDATA | URL先のCSV/TSVデータを取得 | 外部連携 |
| IMPORTHTML | Webページの表やリストを取得 | 外部連携 |
| IMPORTXML | XMLデータをXPathで取得 | 外部連携 |
| GOOGLEFINANCE | 株価・為替レートをリアルタイム取得 | 金融データ |
| GOOGLETRANSLATE | セル内のテキストを自動翻訳 | テキスト処理 |
| SPARKLINE | セル内にミニグラフを表示 | 可視化 |
| IMAGE | セル内にURLの画像を表示 | 可視化 |
関数の入力方法と補完機能
スプレッドシートの関数入力は、Excelと同じくセルに「=」を入力してから関数名を打つ方法が基本です。スプレッドシートにはExcelよりも強力な補完機能が備わっています。
- オートコンプリート:「=SU」と打つだけでSUM、SUMIF、SUMIFS等の候補が自動表示
- 関数ヘルプ:関数名を入力すると引数の説明がポップアップで表示される
- 数式サジェスト:データの内容に応じて、スプレッドシートが使うべき関数を自動提案
- F1キー:入力中の関数の公式ヘルプページを開ける
また、Excelと異なり関数名はすべて英語です。日本語版Excelでは「WENN」(ドイツ語版のIF)のようにローカライズされることがありますが、スプレッドシートは世界共通で英語表記のため、ネット上の英語チュートリアルもそのまま使える利点があります。
初心者向け|まず覚えるべき基本関数5選
まずはスプレッドシートを使い始めたばかりの方が、最初に覚えるべき5つの関数を紹介します。Excelユーザーにも馴染みのある関数ばかりなので、すんなり移行できるはずです。
SUM / AVERAGE — 合計と平均
SUM関数は数値の合計、AVERAGE関数は平均値を求める、最も基本的な関数です。Excelとまったく同じ構文で使えます。
// 合計を求める
=SUM(B2:B100)
// 平均を求める
=AVERAGE(B2:B100)
// 特定のセルを個別に合計
=SUM(B2, B5, B10)
// 複数範囲の合計
=SUM(B2:B10, D2:D10)
スプレッドシートでは、合計したいセル範囲を選択するだけで右下のステータスバーに合計・平均・件数が自動表示されます。ちょっとした確認ならこの機能だけで十分です。
関連記事:Excel SUM関数の使い方完全ガイド
IF / IFS — 条件分岐
IF関数は「条件が真なら値A、偽なら値B」を返す条件分岐の基本関数です。IFS関数は複数の条件を上から順にチェックでき、ネストしたIF関数よりも読みやすく書けます。
// 基本のIF関数:80点以上なら「合格」、それ以外は「不合格」
=IF(B2>=80, "合格", "不合格")
// IF関数のネスト:3段階評価
=IF(B2>=90, "A", IF(B2>=70, "B", "C"))
// IFS関数:ネスト不要で複数条件を処理(スプシ推奨)
=IFS(B2>=90, "A", B2>=70, "B", TRUE, "C")
// IFとANDの組み合わせ:複数条件を同時に満たす場合
=IF(AND(B2>=80, C2>=80), "両方合格", "要再試験")
IFS関数の最後の条件にTRUEを指定すると、どの条件にも当てはまらなかった場合の「それ以外」を設定できます。Excelでも同じように使えますが、Excel 2016以前では使用できません。
VLOOKUP — データ検索の定番
VLOOKUP関数は、指定した値を表の左端列から検索し、同じ行の別の列の値を返す関数です。「商品コードから商品名を引く」「社員番号から部署名を取得する」など、データの紐付けに不可欠です。
// 基本構文:VLOOKUP(検索値, 範囲, 列番号, 完全一致)
=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE)
// 別シートから商品名を検索
=VLOOKUP(A2, '商品マスタ'!A:C, 3, FALSE)
// IFERRORと組み合わせてエラー回避
=IFERROR(VLOOKUP(A2, B:D, 3, FALSE), "該当なし")
// IMPORTRANGEと組み合わせて別ファイルから検索(スプシ独自)
=VLOOKUP(A2, IMPORTRANGE("スプレッドシートURL", "Sheet1!A:C"), 2, FALSE)
スプレッドシートのVLOOKUPはExcelと同じ構文ですが、上の例のようにIMPORTRANGEと組み合わせて別ファイルのデータを検索できるのがスプシならではの使い方です。なお、2023年のアップデートでスプレッドシートにもXLOOKUPが追加されており、より柔軟な検索が可能になっています。
COUNTIF / SUMIF — 条件付き集計
COUNTIF関数は条件に合うセルの個数を数え、SUMIF関数は条件に合うセルの合計を求めます。どちらも複数条件版(COUNTIFS / SUMIFS)が用意されています。
// 「東京」のデータ件数を数える
=COUNTIF(B:B, "東京")
// 80点以上のデータ件数
=COUNTIF(C:C, ">=80")
// 「東京」の売上合計
=SUMIF(B:B, "東京", D:D)
// 複数条件:「東京」かつ「営業部」の件数
=COUNTIFS(B:B, "東京", C:C, "営業部")
// 複数条件:「東京」かつ売上100万以上の合計
=SUMIFS(D:D, B:B, "東京", D:D, ">=1000000")
スプレッドシートでもExcelでも構文は同じですが、スプレッドシートでは後述するQUERY関数のGROUP BY句で同等の処理をより柔軟に行うことも可能です。
関連記事:Excel COUNTIFS関数の使い方
CONCATENATE / TEXTJOIN — 文字列結合
複数のセルの文字列を1つに結合する関数です。CONCATENATEは古くからある関数、TEXTJOINは区切り文字を指定して一括結合できる新しい関数です。
// CONCATENATE:姓と名を結合
=CONCATENATE(A2, " ", B2)
// &演算子でも同じ(こちらが主流)
=A2 & " " & B2
// TEXTJOIN:カンマ区切りで結合(空白セルは無視)
=TEXTJOIN(", ", TRUE, A2:A10)
// TEXTJOIN:メールアドレス一覧を作成
=TEXTJOIN("; ", TRUE, C2:C50)
// ARRAYFORMULAと組み合わせた応用
=TEXTJOIN(CHAR(10), TRUE, IF(B2:B100="東京", A2:A100, ""))
TEXTJOIN関数は、第2引数にTRUEを指定すると空白セルを自動的にスキップしてくれるのが便利です。メールアドレスリストの生成や、タグの結合などに重宝します。
中級者向け|業務効率を劇的に上げる関数5選
ここからはスプレッドシートの真骨頂です。Excelには無い(または大きく異なる)スプレッドシート独自の強力関数を5つ紹介します。これらを使いこなせると、データ処理のスピードが劇的に向上します。
QUERY関数 — SQL風にデータを操作
QUERY関数は、スプレッドシート最強の関数と言っても過言ではありません。データベース言語SQLに似た構文で、データの検索・絞り込み・集計・並び替えを1つの数式で実行できます。
// 基本構文
=QUERY(データ範囲, "クエリ文字列", 見出し行数)
// 東京支店のデータだけ抽出
=QUERY(A1:E100, "SELECT * WHERE B = '東京'")
// 売上が100万以上のデータを売上順に並べる
=QUERY(A1:E100, "SELECT A, B, D WHERE D >= 1000000 ORDER BY D DESC")
// 部署別の売上合計を集計
=QUERY(A1:E100, "SELECT B, SUM(D) WHERE B IS NOT NULL GROUP BY B LABEL SUM(D) '売上合計'")
// セル参照で動的に条件を変える
=QUERY(A1:E100, "SELECT * WHERE B = '"&G1&"'")
QUERY関数があれば、VLOOKUPやFILTER、SORT、COUNTIF/SUMIF、ピボットテーブルの多くの機能を数式1つで代替できます。スプレッドシートを使うなら必ずマスターしたい関数です。
詳しい解説:QUERY関数の使い方完全ガイド
ARRAYFORMULA — 1つの数式で列全体を処理
ARRAYFORMULA関数を使うと、1つのセルに入力した数式を列全体に自動適用できます。Excelの場合、数式を下までコピーする必要がありますが、スプレッドシートではARRAYFORMULAで一発です。
// 税込価格を列全体に一括計算(B2以下にデータがある限り自動展開)
=ARRAYFORMULA(IF(B2:B="", "", B2:B * 1.1))
// 姓と名を結合して列全体に適用
=ARRAYFORMULA(IF(A2:A="", "", A2:A & " " & B2:B))
// IF関数と組み合わせた条件判定の一括適用
=ARRAYFORMULA(IF(C2:C>=80, "合格", "不合格"))
// 連番を自動生成(データがある行だけ)
=ARRAYFORMULA(IF(A2:A="", "", ROW(A2:A)-1))
ARRAYFORMULAの最大のメリットは、新しいデータが追加されても自動で計算されることです。数式のコピー忘れによるミスが無くなるため、共有シートでの運用に最適です。
詳しい解説:ARRAYFORMULA関数の完全ガイド
IMPORTRANGE — 別ファイルのデータを参照
IMPORTRANGE関数は、別のGoogleスプレッドシートファイルからデータを取得する関数です。Excelでは別ブックの参照にファイルパスが必要ですが、スプレッドシートではURLだけでファイル間のデータ連携が実現できます。
// 基本構文
=IMPORTRANGE("スプレッドシートのURL", "シート名!範囲")
// 別ファイルのデータを取得
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxx", "売上データ!A1:E100")
// QUERYと組み合わせて別ファイルを検索・集計
=QUERY(IMPORTRANGE("URL", "Sheet1!A:E"), "SELECT Col1, Col2 WHERE Col3 = '東京'")
// VLOOKUPと組み合わせて別ファイルからマスタ検索
=VLOOKUP(A2, IMPORTRANGE("URL", "商品マスタ!A:C"), 2, FALSE)
初回使用時は「アクセスを許可」ボタンのクリックが必要です。一度許可すれば、以降は自動的にデータが更新されます。部署ごとにファイルが分かれている組織で、全社集計レポートを自動で作るのに最適な関数です。
詳しい解説:IMPORTRANGE関数の使い方と注意点
FILTER — 条件に合うデータだけ抽出
FILTER関数は、条件を満たすデータだけを抽出して表示する関数です。Excelにも同名の関数がありますが(Microsoft 365以降)、スプレッドシートでは以前から使用可能でした。
// 東京のデータだけ抽出
=FILTER(A2:E100, B2:B100="東京")
// 売上が50万以上のデータを抽出
=FILTER(A2:E100, D2:D100>=500000)
// 複数条件(AND):東京 かつ 売上50万以上
=FILTER(A2:E100, B2:B100="東京", D2:D100>=500000)
// 複数条件(OR):東京 または 大阪
=FILTER(A2:E100, (B2:B100="東京")+(B2:B100="大阪"))
// 該当なしの場合のエラー回避
=IFERROR(FILTER(A2:E100, B2:B100="該当なし"), "データなし")
FILTER関数はQUERY関数よりもシンプルに書けるため、単純な条件での抽出ならFILTER、複雑な集計や並び替えが必要ならQUERYと使い分けるのがおすすめです。
UNIQUE / SORT — 重複排除と並び替え
UNIQUE関数は重複を排除したリストを作り、SORT関数はデータを指定の列で並び替えます。どちらもExcel(Microsoft 365)にも追加されましたが、スプレッドシートでは他の関数との組み合わせがしやすい点が特徴です。
// 重複のない部署一覧を取得
=UNIQUE(B2:B100)
// 昇順に並び替え(第2引数=列位置、第3引数=TRUE:昇順)
=SORT(A2:E100, 4, FALSE)
// UNIQUEとSORTの組み合わせ:重複なし+50音順
=SORT(UNIQUE(B2:B100))
// FILTERとSORTの組み合わせ:条件抽出+並び替え
=SORT(FILTER(A2:E100, B2:B100="東京"), 4, FALSE)
// UNIQUEでドロップダウンリスト用の選択肢を自動生成
=SORT(UNIQUE(FILTER(B2:B100, B2:B100<>"")))
UNIQUE + SORT + FILTER の3関数を組み合わせると、動的なデータ抽出・整理がリアルタイムで実現できます。手動でフィルター操作をするよりも圧倒的に効率的です。
上級者向け|自動化・高度なデータ処理の関数5選
ここからは上級者向けの関数です。正規表現による文字列処理、リアルタイムデータの取得、セル内グラフなど、スプレッドシートならではのユニークな関数を紹介します。
REGEXMATCH / REGEXEXTRACT — 正規表現で文字列処理
スプレッドシートには正規表現を使える関数が3つあります。Excelには標準搭載されていない機能で、複雑な文字列のパターンマッチングや抽出が可能です。
// REGEXMATCH:パターンに一致するか判定(TRUE/FALSE)
=REGEXMATCH(A2, "^[0-9]{3}-[0-9]{4}$") // 郵便番号形式か判定
// REGEXEXTRACT:パターンに一致する部分を抽出
=REGEXEXTRACT(A2, "[0-9]+") // 文字列から数字部分だけ抽出
// REGEXREPLACE:パターンに一致する部分を置換
=REGEXREPLACE(A2, "[^0-9]", "") // 数字以外を全て除去
// メールアドレスのドメイン部分を抽出
=REGEXEXTRACT(A2, "@(.+)$")
// 電話番号のハイフンを除去
=REGEXREPLACE(A2, "[-ー]", "")
正規表現を使えば、LEFT/MID/RIGHTやSUBSTITUTEでは複雑になりがちな文字列処理を、短い数式で実現できます。データクレンジング(表記揺れの統一やフォーマット整形)で特に威力を発揮します。
GOOGLEFINANCE — 株価・為替をリアルタイム取得
GOOGLEFINANCE関数は、株価や為替レートなどの金融データをリアルタイムで取得するスプレッドシート専用関数です。外部APIやスクレイピング不要で金融データにアクセスできます。
// 現在の株価を取得(トヨタ自動車)
=GOOGLEFINANCE("TYO:7203", "price")
// 米ドル/円の為替レート
=GOOGLEFINANCE("CURRENCY:USDJPY")
// 過去の株価データ(日足)を取得
=GOOGLEFINANCE("NASDAQ:GOOGL", "close", "2025-01-01", "2025-12-31", "DAILY")
// 時価総額を取得
=GOOGLEFINANCE("NASDAQ:AAPL", "marketcap")
// 52週高値・安値
=GOOGLEFINANCE("TYO:9984", "high52")
=GOOGLEFINANCE("TYO:9984", "low52")
投資ポートフォリオの管理や、海外取引の為替計算に便利です。ただし、データの更新にはタイムラグがあり、リアルタイム性が求められるトレードには向きません。あくまで参考値として活用しましょう。
SPARKLINE — セル内にミニグラフを表示
SPARKLINE関数は、1つのセル内に小さなグラフ(折れ線・棒・積み上げ棒・勝敗)を表示できる関数です。ダッシュボードやレポートで、データの傾向をひと目で把握できるようになります。
// 折れ線グラフ(デフォルト)
=SPARKLINE(B2:M2)
// 棒グラフ
=SPARKLINE(B2:M2, {"charttype","bar"})
// 色を指定した折れ線グラフ
=SPARKLINE(B2:M2, {"charttype","line"; "color","#4285F4"})
// 勝敗グラフ(Win/Loss)
=SPARKLINE(B2:M2, {"charttype","winloss"; "color","green"; "negcolor","red"})
// 棒グラフ(最大値・最小値を強調)
=SPARKLINE(B2:M2, {"charttype","column"; "highcolor","green"; "lowcolor","red"})
ExcelにもSPARKLINE機能(挿入メニューから利用)はありますが、スプレッドシートでは関数として記述できるため、ARRAYFORMULAとの組み合わせや条件付きの表示が容易です。
IMAGE — セル内に画像を表示
IMAGE関数は、URLを指定してセル内に画像を表示する関数です。商品カタログ、従業員名簿、在庫管理シートなどで画像付きのデータベースを関数だけで構築できます。
// 基本:URLの画像をセルに表示
=IMAGE("https://example.com/photo.png")
// サイズモード指定(1:アスペクト比維持, 2:引き伸ばし, 3:原寸, 4:カスタム)
=IMAGE("https://example.com/photo.png", 1)
// カスタムサイズ(幅200px, 高さ150px)
=IMAGE("https://example.com/photo.png", 4, 150, 200)
// セル参照でURLを動的に指定
=IMAGE(D2, 1)
IMAGE関数はExcelには存在しない関数です。Excelで画像を表示するにはセルに画像を手動で挿入する必要がありますが、スプレッドシートならURLさえあれば数式だけで画像を動的に表示できます。
LAMBDA — カスタム関数を数式で定義
LAMBDA関数は、独自のカスタム関数を数式だけで定義できる関数です。GAS(Google Apps Script)を使わずに、再利用可能な関数を作成できます。ExcelのLAMBDAとほぼ同じ構文です。
// 税込計算のカスタム関数
=LAMBDA(price, price * 1.1)(A2)
// 名前付き関数として登録(データ > 名前付き関数)すると再利用可能
// 登録名: TAX_INCLUDED
// 数式: =LAMBDA(price, price * 1.1)
// 使用: =TAX_INCLUDED(A2)
// MAPと組み合わせて配列処理
=MAP(A2:A100, LAMBDA(x, IF(x="", "", x * 1.1)))
// REDUCEで累積計算
=REDUCE(0, A2:A100, LAMBDA(acc, val, acc + val))
LAMBDA関数は「データ」メニューの「名前付き関数」に登録することで、自分だけのオリジナル関数としてシート全体から呼び出せます。チーム内で共通のビジネスロジック(手数料計算、グレード判定など)を共有するのに最適です。
Excel関数との比較表【完全版】
ExcelとGoogleスプレッドシートの関数対応を、3つの視点で整理しました。移行時の参考にしてください。
スプシにあってExcelにない関数
| 関数名 | 機能 | Excelでの代替手段 |
|---|---|---|
| QUERY | SQL風データ操作 | FILTER + SORT + SUMIFS の組み合わせ、またはPower Query |
| ARRAYFORMULA | 列全体に一括適用 | Microsoft 365のスピル機能(動的配列数式) |
| IMPORTRANGE | 別ファイルのデータ参照 | Power Query「データの取得」、または外部参照リンク |
| IMPORTDATA | CSV/TSVデータの取得 | Power Query「Webから」 |
| IMPORTHTML | Web上の表・リスト取得 | Power Query「Webから」 |
| GOOGLEFINANCE | 株価・為替の取得 | 「株式」データ型(Microsoft 365) |
| GOOGLETRANSLATE | 自動翻訳 | 対応する関数なし(アドインが必要) |
| IMAGE | セル内に画像表示 | Excel 365のIMAGE関数(2024年追加) |
| SPARKLINE | セル内ミニグラフ | 挿入メニューのスパークライン(関数ではない) |
| REGEXMATCH / EXTRACT / REPLACE | 正規表現処理 | VBAのRegExpオブジェクト |
Excelにあってスプシにない関数
| 関数名 | 機能 | スプシでの代替手段 |
|---|---|---|
| GETPIVOTDATA | ピボットテーブルからデータ取得 | QUERY関数のGROUP BY + PIVOT |
| CUBE系関数 | OLAPキューブのデータ取得 | 対応なし(BigQuery連携で代替) |
| PHONETIC | ふりがなの取得 | 対応なし |
| INFO | システム情報の取得 | 対応なし |
| CALL / REGISTER.ID | 外部DLLの呼び出し | GAS連携 |
実務でよく使う関数に関しては、スプレッドシートとExcelでほぼ同等のカバレッジです。Excelにしかない関数は、特殊なシステム連携や日本語処理に関わるものが中心です。
同じ名前でも挙動が違う関数
名前は同じでも、ExcelとGoogleスプレッドシートで微妙に挙動が異なる関数があります。移行時のトラブルを防ぐために、代表的な違いをまとめました。
| 関数名 | 違いのポイント |
|---|---|
| VLOOKUP | スプシではIMPORTRANGE連携が可能。第4引数の省略時の挙動が異なる(Excel:TRUE=近似一致、スプシ:TRUE=近似一致だが推奨はFALSE) |
| IFERROR | 基本構文は同じ。スプシでは値のエラー(#VALUE!)と参照エラー(#REF!)の判定が微妙に異なるケースがある |
| FILTER | Excel 365のFILTERは第3引数で「該当なし」時の値を指定可能。スプシではIFERRORで対応 |
| SORT | 基本構文は同じだが、スプシのSORT関数は数式内で使い、ExcelのSORT関数はMicrosoft 365以降のみ |
| XLOOKUP | 2023年にスプシにも追加。構文はExcelと同じだが、スプシではまだベータ的な位置付け |
| TEXT | 日付の書式指定コードが一部異なる(例: Excelの”aaa”=曜日1文字がスプシでは”ddd”) |
関連記事:Excel IFERROR関数の使い方
スプレッドシート関数 x GAS連携で限界突破
スプレッドシートの関数は非常に強力ですが、できることには限界があります。Google Apps Script(GAS)と組み合わせることで、関数だけでは実現できない処理を自動化できます。
関数だけではできないこと
- データの書き込み:関数は「読み取り専用」。別シートへのデータ転記はGASが必要
- メール送信:特定条件を満たしたときにアラートメールを送信
- PDF出力:レポートを自動でPDF化してドライブに保存
- 外部API連携:SlackやChatworkへの通知、外部サービスとの連携
- 定期実行:毎朝9時にデータ集計を自動実行するなどのスケジュール処理
- UIのカスタマイズ:メニューやダイアログの追加
GASで関数を超える自動化例
以下に、関数では難しい処理をGASで自動化する2つのコード例を紹介します。
例1:条件に合うデータを別シートに自動転記
/**
* 売上データから条件に合う行を別シートに自動転記するGAS
* メニューから実行、またはトリガーで毎日自動実行可能
*/
function transferData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getSheetByName('売上データ');
const target = ss.getSheetByName('月次レポート');
// データを取得
const data = source.getDataRange().getValues();
const header = data.shift(); // 見出し行を分離
// 今月のデータだけ抽出
const today = new Date();
const thisMonth = today.getMonth();
const thisYear = today.getFullYear();
const filtered = data.filter(row => {
const date = new Date(row[0]); // A列が日付
return date.getMonth() === thisMonth && date.getFullYear() === thisYear;
});
// 転記先をクリアして書き込み
target.clear();
target.getRange(1, 1, 1, header.length).setValues([header]);
if (filtered.length > 0) {
target.getRange(2, 1, filtered.length, filtered[0].length).setValues(filtered);
}
// 合計行を追加
const lastRow = filtered.length + 2;
target.getRange(lastRow, 1).setValue('合計');
target.getRange(lastRow, 4).setFormula(`=SUM(D2:D${lastRow - 1})`);
SpreadsheetApp.getUi().alert(`${filtered.length}件のデータを転記しました`);
}
例2:期限切れデータを検知してメール通知
/**
* タスクの期限をチェックし、期限切れをメールで通知するGAS
* トリガー設定で毎朝9時に自動実行
*/
function checkDeadlines() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('タスク管理');
const data = sheet.getDataRange().getValues();
const today = new Date();
today.setHours(0, 0, 0, 0);
const overdue = [];
const upcoming = [];
for (let i = 1; i < data.length; i++) {
const taskName = data[i][0]; // A列:タスク名
const deadline = new Date(data[i][2]); // C列:期限
const status = data[i][3]; // D列:ステータス
deadline.setHours(0, 0, 0, 0);
if (status === '完了') continue;
const diff = (deadline - today) / (1000 * 60 * 60 * 24);
if (diff < 0) {
overdue.push(`【期限切れ】${taskName}(期限: ${Utilities.formatDate(deadline, 'Asia/Tokyo', 'yyyy/MM/dd')})`);
} else if (diff <= 3) {
upcoming.push(`【あと${Math.ceil(diff)}日】${taskName}(期限: ${Utilities.formatDate(deadline, 'Asia/Tokyo', 'yyyy/MM/dd')})`);
}
}
if (overdue.length > 0 || upcoming.length > 0) {
const body = [
'=== タスク期限アラート ===\n',
overdue.length > 0 ? '■ 期限切れタスク\n' + overdue.join('\n') : '',
upcoming.length > 0 ? '\n■ 期限間近タスク\n' + upcoming.join('\n') : '',
`\nシートURL: ${SpreadsheetApp.getActiveSpreadsheet().getUrl()}`
].filter(Boolean).join('\n');
MailApp.sendEmail({
to: Session.getActiveUser().getEmail(),
subject: `【タスクアラート】期限切れ${overdue.length}件 / 期限間近${upcoming.length}件`,
body: body
});
}
}
GASの基本的な使い方から学びたい方は、以下の記事をご覧ください。
詳しい解説:Google Apps Script(GAS)入門ガイド
よくある質問(FAQ)
Q. ExcelとスプレッドシートでVLOOKUPの使い方は同じですか?
A. 基本的な構文は同じですが、スプレッドシートではIMPORTRANGEと組み合わせて別ファイルからVLOOKUPする使い方が多いです。また、第4引数(検索の型)は両方ともTRUE(近似一致)/FALSE(完全一致)ですが、実務ではFALSEを指定するのが一般的です。
Q. スプレッドシートにXLOOKUP関数はありますか?
A. はい、2023年のアップデートでスプレッドシートにもXLOOKUP関数が追加されました。Excelと同じ構文で使えます。VLOOKUPの「検索列が左端でなければならない」という制約がなく、より柔軟な検索が可能です。
Q. ARRAYFORMULA関数はExcelにもありますか?
A. Excelには同名の関数はありませんが、Microsoft 365のDynamic Array(スピル)機能で同様のことが可能です。Excel 365では数式を1つのセルに入力するだけで結果が自動的に隣接セルに展開されます。従来のExcel(2019以前)ではCtrl+Shift+Enterで配列数式を入力する方法がありましたが、ARRAYFORMULAほど直感的ではありません。
Q. スプレッドシートの関数は何個ありますか?
A. Googleスプレッドシートには400以上の組み込み関数があります。ただし実務で頻繁に使うのは20~30関数程度です。本記事で紹介した15関数をマスターすれば、日常業務のほとんどをカバーできます。
Q. 関数が多すぎてどれを覚えればいいかわかりません。
A. まず本記事の「初心者向け5選」から始めてください。SUM・IF・VLOOKUPの3つを使いこなせれば、多くの業務に対応できます。その後、QUERY関数とARRAYFORMULAを覚えると、スプレッドシートの真価を発揮できるようになります。
まとめ
この記事では、Googleスプレッドシートのおすすめ関数15選をレベル別に紹介しました。
- 初心者向け5選:SUM/AVERAGE、IF/IFS、VLOOKUP、COUNTIF/SUMIF、CONCATENATE/TEXTJOIN
- 中級者向け5選:QUERY、ARRAYFORMULA、IMPORTRANGE、FILTER、UNIQUE/SORT
- 上級者向け5選:REGEX系、GOOGLEFINANCE、SPARKLINE、IMAGE、LAMBDA
- スプレッドシート最大の武器はQUERY関数とARRAYFORMULA。この2つはExcelにない独自機能
- 関数の限界を超えるにはGAS(Google Apps Script)との連携が有効
- Excel関数との互換性は高いが、IMPORT系・REGEX系・IMAGE・SPARKLINEはスプシ独自
まずは初心者向け5選のSUM・IF・VLOOKUPから使い始めて、慣れてきたらQUERY関数やARRAYFORMULAに挑戦してみてください。関数だけでは足りなくなったら、GASで自動化の世界に踏み出しましょう。
Excelの関数も一覧で確認したい方は、こちらの記事もあわせてご覧ください。
Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
LINEでExcelを気軽に学べる
「スプレッドシートの関数やGASを活用して業務を自動化したいけど、自分では難しい…」という方へ。スプレッドシートの自動化からGAS開発まで、業務効率化をサポートします。
