「データ範囲の端に空白行・空白列が混じっていて、集計や数式がうまく回らない」──そんな場面、ありませんか?
社外システムから貼り付けたデータや、フィルターを外したあとに残る空白行・空白列は、SUMやCOUNTA、FILTER関数の結果にズレを生む原因になります。手作業で「Ctrl+End」を押して末尾を確認しながら不要な行を消すのも面倒ですし、データが追加されるたびに同じ作業を繰り返すのも非効率です。
ExcelのTRIMRANGE関数を使えば、配列やセル範囲の「端」にある空白行・空白列を数式1つで自動的に除去できます。元データが変わっても再計算で追従してくれるので、メンテナンスフリーな集計フローが組めますよ。
この記事では、TRIMRANGE関数の構文・引数の細かな挙動・実務ユースケース・関連関数との使い分けまで、はじめてでも迷わないように解説します。
TRIMRANGE関数とは?「端の空白」だけを取り除く配列関数
TRIMRANGE関数は、配列またはセル範囲の「端にある空白行・空白列」を除去した配列を返す関数です。ここでいう「端」とは、配列の上端・下端・左端・右端の4方向のこと。中間にある空白行・空白列は除去されませんので、まずこの仕様を押さえておきましょう。
読み方は「トリムレンジ」です。”TRIM”(切り取る・除去する)と “RANGE”(範囲)を組み合わせた名前で、文字列のスペースを除去するTRIM関数とは別物です。
たとえば、A1:C6 の範囲に6行のデータがあり、1行目と6行目が全列空白だとします。=TRIMRANGE(A1:C6) と入力すると、空白の1行目と6行目を除いた B2:C5 相当の配列(中身は元データ)が返されます。元の範囲の空白が増減したり、データが下方向に伸びたりしても、TRIMRANGE関数が自動で調整してくれます。
「空白」と判定される条件
TRIMRANGE関数が「空白行・空白列」と判定するのは、その行(または列)に入力済みの値が1つもないケースです。次のようなセルは「空白ではない」とみなされるので注意してください。
- 空文字
""が数式で出力されているセル - スペース1文字や全角スペースが入っているセル
- 0 が入っているセル
たとえばIF関数で =IF(A1="", "", A1) のように空文字を返している場合、見た目は空白でもTRIMRANGE関数は「値あり」と判定して残します。FILTER関数の結果に空文字が混ざるケースでも同様で、想定どおり除去されないときは「本当に空白か」を Ctrl+→ や Ctrl+↓ で確認してみてください。
Microsoft 365 / Excel 2024以降のみ使用可能
TRIMRANGE関数は、以下の環境でのみ動作します。
| 環境 | 対応 |
|---|---|
| Microsoft 365(Windows / Mac / Web) | ○ |
| Excel 2024(Windows / Mac) | ○ |
| Excel 2021 | × |
| Excel 2019 / 2016 | × |
スピル(数式の結果が複数セルに自動展開される機能)に対応した環境が必要です。Microsoft 365 であっても、更新チャネルが「半期チャネル」など古いブランチだと未配信のことがあるので、=ISFORMULA(TRIMRANGE) や数式オートコンプリートで関数名が候補に出るかを確認するのが手っ取り早い方法です。
Excel 2021以前で使えない場合の代替手段
Excel 2021以前では、TRIMRANGE関数は使えません。代わりに、次のような組み合わせで近い処理を再現できます。
' 末尾の空白行を除去(FILTER + 行が全部空白でないセル)
=FILTER(A1:C100, (A1:A100<>"")+(B1:B100<>"")+(C1:C100<>"")>0)
FILTER関数(Excel 2021以降で利用可能)で「いずれかの列に値がある行」だけを抽出すれば、中間と端の両方の空白行を除けます。さらに古いExcel 2019以前ではOFFSET+COUNTAで動的範囲を作る方法もありますが、数式が複雑になりがちなので、可能であれば Microsoft 365 への移行を検討してみてください。
TRIMRANGE関数の書き方(構文と引数)
基本構文
=TRIMRANGE(array, [rows_trim], [cols_trim])
引数は3つで、2番目と3番目は省略できます。両方とも省略した =TRIMRANGE(A1:C10) の形が最も使う頻度の高い書き方です。
引数の詳細
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| array | 必須 | 空白を除去する配列またはセル参照 |
| rows_trim | 省略可 | 行方向の除去方法。0〜3で指定(デフォルト: 3) |
| cols_trim | 省略可 | 列方向の除去方法。0〜3で指定(デフォルト: 3) |
第1引数 array(必須):空白を除去する対象
array には、空白を除去したい配列やセル範囲を指定します。1次元配列(1行または1列)でも、2次元配列(複数行×複数列)でも使えます。セル範囲だけでなく、{1;2;;;5} のような配列定数や、FILTER・CHOOSECOLS などの結果配列を直接渡すこともできます。
第2引数 rows_trim(省略可):行の除去方向
rows_trim には、行方向でどの端の空白を除去するかを指定します。
| 値 | 動作 |
|---|---|
| 0 | 行方向の空白を除去しない |
| 1 | 先頭(上端)の空白行のみ除去 |
| 2 | 末尾(下端)の空白行のみ除去 |
| 3 | 先頭と末尾の両方の空白行を除去(デフォルト) |
省略した場合は 3(両端を除去)になります。「末尾の余白だけ削りたい」「上端の見出し前の余白だけ削りたい」というシーンでは、2 や 1 を明示的に指定します。
第3引数 cols_trim(省略可):列の除去方向
cols_trim には、列方向でどの端の空白を除去するかを指定します。
| 値 | 動作 |
|---|---|
| 0 | 列方向の空白を除去しない |
| 1 | 先頭(左端)の空白列のみ除去 |
| 2 | 末尾(右端)の空白列のみ除去 |
| 3 | 先頭と末尾の両方の空白列を除去(デフォルト) |
省略した場合は 3(両端を除去)になります。
NOTE
rows_trim と cols_trim を両方省略すると、
=TRIMRANGE(array)という最もシンプルな形になります。この場合、上下左右の端の空白行・空白列がすべて除去されます。引数を覚えるのが面倒なときは「とりあえず省略形」で十分なケースが多いです。
簡略記法:トリミング参照演算子(.)
Microsoft 365 では、TRIMRANGE関数の省略形としてトリミング参照演算子(ピリオド .)が用意されています。範囲指定の : の前後にピリオドを置くだけで、対応する方向の空白を除去できます。
| 記法 | 等価な数式 | 動作 |
|---|---|---|
A1:.C100 | =TRIMRANGE(A1:C100, 2, 2) | 下端・右端の空白を除去 |
A1.:C100 | =TRIMRANGE(A1:C100, 1, 1) | 上端・左端の空白を除去 |
A1.:.C100 | =TRIMRANGE(A1:C100) | 上下左右すべての空白を除去 |
たとえば =SUM(A1:.A1000) と書けば、A列に1000行の余裕を持たせつつ、実際に値が入っている範囲だけを合計してくれます。動的に伸びるテーブルに対する「縦に長い予約範囲」と組み合わせるとシンプルに書けるので、覚えておくと便利な書き方です。
基本的な使い方:端の空白を除去する
上下左右すべての端を除去する例
A1:C6 の範囲に以下のようなデータがあるとします。1行目と6行目が空白行、A列がすべて空白列です。
| A列 | B列 | C列 | |
|---|---|---|---|
| 1行 | (空白) | (空白) | (空白) |
| 2行 | (空白) | 商品名 | 価格 |
| 3行 | (空白) | りんご | 150 |
| 4行 | (空白) | みかん | 80 |
| 5行 | (空白) | ぶどう | 300 |
| 6行 | (空白) | (空白) | (空白) |
セル E1 に次の数式を入力します。
=TRIMRANGE(A1:C6)
結果として、空白の1行目・6行目・A列が除去され、B2:C5 相当のデータが返されます。
| 商品名 | 価格 |
|---|---|
| りんご | 150 |
| みかん | 80 |
| ぶどう | 300 |
元の A1:C6 の空白が変わっても、TRIMRANGE関数が自動で調整してくれます。データが下に1行追加されれば結果も1行増え、空白行が増えれば自動でその分を切り詰めます。
行方向のみ除去する例
列方向の空白は除去せず、行方向だけ除去したい場合は cols_trim=0 を指定します。
=TRIMRANGE(A1:C6, 3, 0)
上下の空白行が除去されますが、左端の空白列(A列)は残ります。「列構造はテンプレートとして固定したいが、行は伸縮させたい」というケースで使う形です。
下端のみ除去する例(ログ追記用)
追記形式のログデータで、下端に余分な空白行が積み上がっている場合などは rows_trim=2 が便利です。
=TRIMRANGE(A1:C100, 2, 0)
A1:C100 の範囲のうち、下端の空白行のみ除去します。上端のヘッダー行や A〜C 列の構造は変更しません。=COUNTA(TRIMRANGE(A1:C100, 2, 0)) のように COUNTA と組み合わせれば「実データだけの件数」を取得できます。
上端のみ除去する例(インポート時の空白行対策)
CSVをインポートしたときに、ファイル先頭にメタ情報の空白行が入ってしまうケースがあります。そのときは rows_trim=1 が活躍します。
=TRIMRANGE(A1:C200, 1, 0)
先頭の空白行だけを除き、末尾の空白行はそのまま残します。下端を残しておけば、その後に追記したデータが自然に取り込まれる構造になります。
実務ユースケース4選
ユースケース①:貼り付けデータの空白行を自動クリーンアップ
社外システムからコピペしたデータの先頭や末尾に、余分な空白行が入ってしまうことがあります。A1:D50 の範囲に貼り付けたデータがあり、先頭3行と末尾5行が空白だとします。
=TRIMRANGE(A1:D50)
空白行が自動で除去されたクリーンなデータが返されます。この数式を一度別シートに用意しておき、=SUM(クリーン!B:B) のように参照すれば、貼り替えのたびに集計ロジックを直す必要がなくなります。「貼り付け面」と「集計面」を分けるのがメンテナンス性を上げるコツです。
ユースケース②:WRAPROWS / WRAPCOLS と組み合わせて整形精度を上げる
データの端に空白がある状態で WRAPROWS や WRAPCOLS を使うと、空白セルも折り返し対象に含まれてしまい、結果配列に意図しない空白が混ざります。先に TRIMRANGE で空白を除去しておくと、折り返し後の配列がきれいになります。
=WRAPROWS(TRIMRANGE(A1:A20), 4, "")
A1:A20 のうち、先頭・末尾の空白を除去してから4列で折り返します。リスト形式のデータを「印刷向けのグリッド」に変換するときによく使う組み合わせです。
WRAPROWS の詳細は ExcelのWRAPROWS関数の使い方 を参照してみてください。WRAPCOLS の詳細は ExcelのWRAPCOLS関数の使い方 を参照してみてください。
ユースケース③:FILTER 関数と組み合わせた空白除去
FILTER関数で条件抽出したあと、結果の先頭・末尾に空白行が残ることがあります。TRIMRANGE でラップすると、抽出結果の空白を除去できます。
=TRIMRANGE(FILTER(A2:C20, B2:B20="東京"))
B列が「東京」の行を抽出し、結果の端の空白を除去します。データが変わっても数式が自動で調整されますよ。条件に合致する行がゼロのときは #CALC! エラーになるので、IFERROR や FILTER(..., ..., "該当なし") の第3引数で逃しておくとさらに堅牢になります。
ユースケース④:動的な集計範囲を作って SUMIFS にそのまま渡す
トリミング参照演算子(.)と SUMIFS を組み合わせると、「データが何行追加されても合計が崩れない」テンプレートが簡単に作れます。
=SUMIFS(C2:.C10000, A2:.A10000, "2026/05", B2:.B10000, "東京")
C列の末尾までを自動で詰めて合計するので、最大1万行までの伸び代を予約しておきながらも、計算対象は実データ部分だけに保てます。OFFSET で動的範囲を作る古い手法に比べて、ボラタイル関数を使わない分パフォーマンスにも優しい書き方です。
関連関数との使い分け
TRIM関数との違い
「TRIM」という名前の関数は別にも存在します。混同しないようにしておきましょう。
| 関数 | 対象 | 動作 |
|---|---|---|
| TRIM(テキスト関数) | 文字列 | 文字列の先頭・末尾・連続スペースを除去 |
| TRIMRANGE | 配列・セル範囲 | 配列の端にある空白行・空白列を除去 |
TRIM関数は文字列のスペースを除去する関数で、配列の構造には影響しません。TRIMRANGE関数は配列の行・列の端を整形する関数で、文字列のスペースには影響しません。両方を組み合わせて、=TRIMRANGE(BYROW(A1:A100, LAMBDA(r, TRIM(r)))) のように「端の空白行を消しつつ、各セルの文字列スペースも除去」とすることも可能です。
FILTER関数との違い
FILTER は条件に一致する行だけを抽出し、TRIMRANGE は端の空白行・列を除去します。
「中間の空白行も除去したい」という場合は、TRIMRANGE ではなく FILTER 関数を使います。
' 空でない行だけを抽出(中間の空白行も含めて除去)
=FILTER(A1:C20, A1:A20<>"")
端だけでなく全体から空白行を取り除きたい場合は FILTER 関数の出番です。逆に、テンプレートとしての枠は維持したまま末尾だけ詰めたい場合は TRIMRANGE が向いています。
TAKE / DROP との違い
TAKE は「先頭または末尾から N 行を取り出す」、DROP は「先頭または末尾から N 行を捨てる」関数です。空白かどうかに関わらず、行数で指定して切り出します。
| 関数 | 指定方法 | 用途 |
|---|---|---|
| TRIMRANGE | 空白かどうかで判定 | 「とにかく端の空白を消したい」 |
| TAKE / DROP | 行数・列数で指定 | 「先頭○件だけ欲しい」「ヘッダー1行を捨てたい」 |
「先頭3行は不要な見出しなので捨てる」というような固定行数の処理には DROP の方が向きます。逆に、「下端の余白がデータ量に応じて変わる」シーンでは TRIMRANGE の方が自然です。
エラーの原因と対処法まとめ
TRIMRANGE関数で発生しうるエラーは以下の通りです。
| エラー | 主な原因 | 対処法 |
|---|---|---|
| #VALUE! | rows_trim / cols_trim に 0〜3 以外の値を指定した | 0〜3 の整数を指定する |
| #SPILL! | スピル先のセルに値が入っている | 出力先の範囲を空にしてから入力し直す |
| #NAME? | TRIMRANGE が未対応の Excel バージョンで使用 | Microsoft 365 / Excel 2024 にアップデートする |
| 全行・全列が除去される | 対象範囲がすべて空白 | 対象範囲にデータが入っているか確認する |
rows_trim / cols_trim の値が不正な場合
rows_trim や cols_trim に 0〜3 以外の値(例: 4 や -1)を指定すると #VALUE! になります。
=TRIMRANGE(A1:C6, 4, 0) ' → #VALUE!(rows_trim は 0〜3 のみ)
0・1・2・3 のいずれかを指定してください。「両端を除く」が 3、「端を残す」が 0、と覚えると混乱しません。
スピル先にデータがある場合(#SPILL!)
TRIMRANGE関数はスピルを使って結果を複数セルに展開します。出力先の範囲に他のデータが入っていると、#SPILL! エラーになります。エラーセルにマウスを乗せると「スピル先のセルにデータがあります」と表示されるので、その方向にデータがないかを確認して、出力先の範囲を空にしてから数式を入力し直してください。
古いバージョンで開いたときの #NAME?
Microsoft 365 で作成したファイルを Excel 2019 や 2016 で開くと、TRIMRANGE関数は認識されず #NAME? エラーになります。共有先の環境がわからない場合は、最終結果を「値貼り付け」してから配布するか、FILTER関数ベースの代替式に置き換えることを検討してください。
空白でないように見えて空白扱いされない場合
冒頭でも触れたとおり、空文字 "" が出力されているセルは「値あり」と判定されて除去されません。=LET(d, A1:C100, t, TRIMRANGE(IF(d="", "", d)), t) のように一度 IF で実セルの空文字を整理してから渡しても結果は変わらないので、根本的に除去したい場合は FILTER 関数で条件抽出するか、COUNTBLANK + IF で空白判定を切り替えるアプローチに切り替えてみてください。
まとめ:TRIMRANGE関数で配列の端の空白をすっきり除去しよう
この記事の要点を整理します。
| ポイント | 内容 |
|---|---|
| できること | 配列・セル範囲の端にある空白行・空白列を除去 |
| 構文 | =TRIMRANGE(array, [rows_trim], [cols_trim]) |
| 対応環境 | Microsoft 365 / Excel 2024 以降のみ |
| rows_trim / cols_trim | 0=除去なし / 1=先頭のみ / 2=末尾のみ / 3=両端(デフォルト) |
| 簡略記法 | トリミング参照演算子 .(例: A1:.C100) |
| TRIM関数との違い | TRIM は文字列のスペース除去、TRIMRANGE は配列の端の行・列除去 |
| FILTER関数との違い | TRIMRANGE は端のみ、FILTER は中間も含めて条件抽出 |
TRIMRANGE関数を使えば、コピペデータの余分な空白行・列を数式1つで自動除去できます。WRAPROWS・WRAPCOLS・FILTER など他の配列関数と組み合わせると、さらに強力なデータ整形フローが組めますよ。
「貼り付け面」と「集計面」を分け、TRIMRANGE で常にクリーンなデータを介する設計にしておけば、毎月の更新作業がぐっと軽くなります。ぜひ実務で試してみてください。
関連関数
配列操作の関連記事もあわせてどうぞ。
- ExcelのWRAPROWS関数の使い方(1次元配列を行方向に折り返す)
- ExcelのWRAPCOLS関数の使い方(1次元配列を列方向に折り返す)
- ExcelのTOCOL関数の使い方(2次元配列を縦1列に変換)
- ExcelのTOROW関数の使い方(2次元配列を横1行に変換)
- ExcelのSEQUENCE関数の使い方(連番を自動生成)
- ExcelのHSTACK関数の使い方(配列を横方向に結合)
- ExcelのVSTACK関数の使い方(配列を縦方向に結合)
- ExcelのTAKE関数の使い方(先頭・末尾を抽出)
