ExcelのTRIMRANGE関数の使い方|配列の端の空白を除去する

スポンサーリンク

「データ範囲の端に空白行・空白列が混じっていて、集計や数式がうまく回らない」──そんな場面、ありませんか?

社外システムから貼り付けたデータや、フィルターを外したあとに残る空白行・空白列は、SUMやCOUNTA、FILTER関数の結果にズレを生む原因になります。手作業で「Ctrl+End」を押して末尾を確認しながら不要な行を消すのも面倒ですし、データが追加されるたびに同じ作業を繰り返すのも非効率です。

ExcelのTRIMRANGE関数を使えば、配列やセル範囲の「端」にある空白行・空白列を数式1つで自動的に除去できます。元データが変わっても再計算で追従してくれるので、メンテナンスフリーな集計フローが組めますよ。

この記事では、TRIMRANGE関数の構文・引数の細かな挙動・実務ユースケース・関連関数との使い分けまで、はじめてでも迷わないように解説します。

  1. TRIMRANGE関数とは?「端の空白」だけを取り除く配列関数
    1. 「空白」と判定される条件
    2. Microsoft 365 / Excel 2024以降のみ使用可能
    3. Excel 2021以前で使えない場合の代替手段
  2. TRIMRANGE関数の書き方(構文と引数)
    1. 基本構文
    2. 引数の詳細
    3. 第1引数 array(必須):空白を除去する対象
    4. 第2引数 rows_trim(省略可):行の除去方向
    5. 第3引数 cols_trim(省略可):列の除去方向
    6. 簡略記法:トリミング参照演算子(.)
  3. 基本的な使い方:端の空白を除去する
    1. 上下左右すべての端を除去する例
    2. 行方向のみ除去する例
    3. 下端のみ除去する例(ログ追記用)
    4. 上端のみ除去する例(インポート時の空白行対策)
  4. 実務ユースケース4選
    1. ユースケース①:貼り付けデータの空白行を自動クリーンアップ
    2. ユースケース②:WRAPROWS / WRAPCOLS と組み合わせて整形精度を上げる
    3. ユースケース③:FILTER 関数と組み合わせた空白除去
    4. ユースケース④:動的な集計範囲を作って SUMIFS にそのまま渡す
  5. 関連関数との使い分け
    1. TRIM関数との違い
    2. FILTER関数との違い
    3. TAKE / DROP との違い
  6. エラーの原因と対処法まとめ
    1. rows_trim / cols_trim の値が不正な場合
    2. スピル先にデータがある場合(#SPILL!)
    3. 古いバージョンで開いたときの #NAME?
    4. 空白でないように見えて空白扱いされない場合
  7. まとめ:TRIMRANGE関数で配列の端の空白をすっきり除去しよう
    1. 関連関数

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_trim0=除去なし / 1=先頭のみ / 2=末尾のみ / 3=両端(デフォルト)
簡略記法トリミング参照演算子 .(例: A1:.C100
TRIM関数との違いTRIM は文字列のスペース除去、TRIMRANGE は配列の端の行・列除去
FILTER関数との違いTRIMRANGE は端のみ、FILTER は中間も含めて条件抽出

TRIMRANGE関数を使えば、コピペデータの余分な空白行・列を数式1つで自動除去できます。WRAPROWS・WRAPCOLS・FILTER など他の配列関数と組み合わせると、さらに強力なデータ整形フローが組めますよ。

「貼り付け面」と「集計面」を分け、TRIMRANGE で常にクリーンなデータを介する設計にしておけば、毎月の更新作業がぐっと軽くなります。ぜひ実務で試してみてください。

関連関数

配列操作の関連記事もあわせてどうぞ。

タイトルとURLをコピーしました