エクセルでn列おき・n行おきにデータを参照する方法|INDEX・OFFSETで簡単抽出&合計!
エクセルでn列おき・n行おきにデータを参照する方法|INDEX・OFFSETで簡単抽出&合計! COLUMN() の引数をA1から始めることで、数式を右方向にコピーするだけで自動的に3列おきのデータを抜き出せます。 範囲指定の `$A1:$Z1` のように `$` を付けると「絶対参照」になり、関数を横方向にコピーしても参照範囲がズレません。
- COLUMN() の引数をA1から始めることで、数式を右方向にコピーするだけで自動的に3列おきのデータを抜き出せます。
- 範囲指定の `$A1:$Z1` のように `$` を付けると「絶対参照」になり、関数を横方向にコピーしても参照範囲がズレません。 一方で、`COLUMN(A1)`のようなセル参照は「相対参照」なので、右へコピーすると自動的に `A1 → B1 → C1…` と変化し、3列おきの参照が実現できます。
- 行方向(縦方向)にn行おきのデータを抜き出したい場合は、`COLUMN`関数の代わりに `ROW` 関数を使えば同じような仕組みで対応できます。たとえば、以下のように書くと `A1` を基準に2行おきに参照できます:
OFFSET関数 は、指定した基準セルから「何行」「何列」ずらした位置のセルを参照できる関数です。n列おきやn行おきのデータを抽出したいときに便利です。
たとえば、基準セル A1 から3列右(D列)を参照したい場合は、次のように書きます。
=OFFSET(A1, 0, 3)この式では、A1から0行下・3列右にあるセル(つまりD1)を参照します。ただしこの式のままだと、どこにコピーしても常に3列右にあるセルを参照してしまうため、「3列おきに動かす」といった使い方はできません。
3列おきに参照先を変化させたい場合は?
COLUMN() 関数を組み合わせて、コピー先に応じて動的に列数を計算するのがポイントです。以下のような式にすると、右にコピーするたびに3列ずつ先のセルを参照できるようになります。
=OFFSET(Sheet2!$A1, 0, (COLUMN(A1)-1)*3)- $A1 :常にA列を基準とする(絶対参照)
- COLUMN(A1) :コピー元の列番号(A列=1、B列=2…)
- -1 :最初が0列ずれから始まるよう調整
- *3 :3列ごとに参照先を変化させる
と、3列おきにデータを取り出すことができます。
n列おきに参照するには?先ほどは「3列おきにデータを参照する方法」を紹介しました。ここでは、任意のn列おきにデータを取得する方法をまとめておきます。
たとえば、基準セルが Sheet2!A1 の場合、n列おきに参照するには以下のような式を使います:
=OFFSET(Sheet2!$A1, 0, (COLUMN(A1)-1)*n)この式の「n」の部分に3や5などの任意の列数を入れることで、3列おき、5列おき…といったように、好きな間隔でデータを参照できます。
2行おきにデータを参照するには?次に、「2行おき」にデータを参照したい場合の方法を紹介します。列を基準に参照する場合は COLUMN 関数を使いましたが、行を基準にする場合は ROW 関数を使います。
たとえば、 Sheet2!A4 を基準とする場合、以下のように書きます:
=OFFSET(Sheet2!A$4, (ROW(A1)-1)*2, 0)ここではA$4の「行」部分を絶対参照にしておくことで、コピーしても基準が変わらず、2行おきに正しく参照されるようになります。
n行ごとに参照する場合は?「2行おき」の式を応用すれば、n行おきにデータを取り出すことも可能です。以下のように書けば、行数を自由に調整できます:
=OFFSET(Sheet2!A$4, (ROW(A1)-1)*n, 0)「n」の部分に好きな数(例:3、5 など)を入れれば、3行おき、5行おき…といった間隔でデータを抽出できます。
●n列おき・n行おきの合計にはSUMPRODUCTが便利n列おきの数値を合計したい場合、単純な SUM関数 ではうまくいきません。このようなときは SUMPRODUCT関数 や INDEX + MOD 関数の組み合わせが有効です。
▼たとえば:3列おきにある売上データを合計 A B C D E F G 日時 担当 売上① 日時 担当 売上② …このような表で売上①・売上②・売上③…だけを合計したいときは、以下のような配列数式が使えます:
=SUMPRODUCT(--(MOD(COLUMN(A2:I2)-COLUMN(A2),3)=2), A2:I2)MOD(. )=2 の部分で「3列おきの3列目(売上の列)」だけを抽出して合計しています。
補足この数式は、3列おきにある「売上」列だけを抜き出して合計するためのものです。
=SUMPRODUCT(--(MOD(COLUMN(A2:I2)-COLUMN(A2),3)=2), A2:I2) 式の構造と考え方 部分 意味 COLUMN(A1:I1) 各列の番号を取得(A=1, B=2, …, I=9) COLUMN(A1) 基準列(A列)の番号=1 MOD(. 3) 各列番号と基準との差を3で割った余りを計算 =2 「3列ごとの3列目(売上列)」だけを抽出(例:C列, F列, I列) --(. ) TRUE/FALSE を 1/0 に変換(掛け算できるようにする) A2:I2 合計したい対象行の範囲(売上以外も含まれているが、フィルターで除外) 結果としてどうなるか?- 売上列だけに 1 が掛けられ、他の列は 0 になる
- 実際に加算されるのは「売上1」「売上2」「売上3」だけ
- 担当者名や日付などの文字列は無視され、数値だけを安全に合計できます
MOD(. ) = 2 の結果は「TRUE / FALSE」になります。そのままでは掛け算できないので、 -- を使って「1 / 0」に変換します。
この書き方は、論理条件で必要な列だけを選んで集計するときの基本テクニックです。
●FILTER関数で3行おきに抽出(365以降)Excel365以降で使える FILTER関数 を活用すれば、3行おきにデータを抜き出すことも可能です。
たとえば、行番号が奇数のデータだけ抽出したい場合は、 MOD関数 と組み合わせて次のように書きます。
=FILTER(A2:B100, MOD(ROW(A2:A100)-ROW(A2),3)=0)この式では、「3行おき(0,3,6…)」に該当する行だけを抽出しています。スピル機能を使って、一覧を自動展開できるのもポイントです。
●コピー・貼り付けでもn行おきに処理したい場合 ▼手動で貼り付ける方法:- コピー元のデータを選択
- 貼り付けたい範囲で1行飛ばしに選択(Ctrl+クリック)
- Ctrl+Vで貼り付け
- フィルターで偶数/奇数行だけ表示して貼り付け 例えばROW関数とMOD関数を利用して偶数/奇数行を判別する列を作成し、フィルターで絞りこみする方法があります。
- VBAマクロでループ処理して自動化
まとめ:エクセルでn列おき・n行おきの参照は関数で効率化しよう
こうした操作も、以下のような関数を使うことで、手間をかけずにスマートに対応することができます。
操作内容 おすすめ関数 特徴 n列おきに参照 INDEX + COLUMN 列番号を計算して自動的に参照先をずらせる n行おきに参照 INDEX + ROW 、または OFFSET 行方向への柔軟な参照が可能 n列おきに合計 SUMPRODUCT + MOD + COLUMN 条件を満たす列だけを抽出して合計できる n行おきに抽出 FILTER + MOD + ROW (365以降) スピルで間引き抽出に対応(表示がきれい) 貼り付けなどの操作 手動選択 or VBA シンプルな場合は手動でも対応可能特に、「等間隔で並んでいるけど一部だけ抜き出したい」といったケースでは、関数を使った参照テクニックが大きな時短につながります。
よくあるエラーとその対処法
●#REF! エラー:参照先が範囲外になっている原因: INDEX や OFFSET 関数で指定した行・列番号が、範囲を超えてしまっている場合に発生します。
対処法:
- INDEX 関数では範囲の最大サイズを確認し、ずれすぎていないか確認しましょう
- COLUMN(A1)-1)*3+1 などの計算式で値が大きくなりすぎていないか見直してください
たとえば =MOD(A2:A100, 3) のように、セルの範囲(複数セル)をまとめて使おうとしたとき、関数の使い方によってはエラーになります。
これは、「配列(複数の値)をそのまま使っていいかどうか」が関数ごとに違うためです。
また、新しいExcelでは自動で複数の結果を表示してくれますが、古いバージョンでは配列数式として特別な入力が必要になります。
対処法①:スピル対応の関数を使うたとえば、 ROW(A2:A4) のように行番号を使って配列を作ると、MOD関数と組み合わせて正しく動作します。
= MOD ( ROW (A2:A4), 3 )この場合は、A2~A4の行番号(2, 3, 4)に対して MOD をかけるので、正常に結果が出ます。
対処法②:古いExcelでは「Ctrl + Shift + Enter」で確定するCtrl + Shift + Enter
この形式でないと、複数セルの範囲をうまく扱えずにエラーになることがあります。
配列数式とスピルってなに?- 配列数式:複数の値(セル範囲など)をまとめて計算する数式
- スピル:計算結果が自動で複数のセルに広がって表示される仕組み(Excel 365/2021以降)
原因: COLUMN() や ROW() 関数の基準セル(例:A1)をそのままコピペしていて、参照開始位置がずれてしまうパターンです。
対処法:
- COLUMN(A1) や ROW(A2) の **「基準セルの位置」**を見直し、想定通りに増加しているか確認しましょう
- 位置がずれると、n列おき・n行おきの計算結果が変わってしまいます
原因:出力先のセルにすでに何か入力されていて、スピルの展開が邪魔されている状態です。
対処法:
- スピルを使う関数の出力先が空いているかを確認しましょう
- セルの結合や、隣接セルの入力が影響していないかもチェックしてみてください
こうしたエラーは、一度経験しておくと次回からすぐに気づけるようになります。トラブル時は、「どの部分の引数が意図通りに動いていないか?」を分解して確認するのがコツです。
【関連記事】- エクセル 1 行 おき に 2 行 挿入を簡単にする方法は?行の挿入に関するテクニック集
- エクセルで別ファイルのセルを参照する方法まとめ|リンク貼り付け・Power Query・VBAを比較解説
- Excelの置換がうまくいかない?表記ゆれ・改行・複数一括置換の対処法まとめ!
- INDEX 関数 |Microsoft サポート
- OFFSET 関数 |Microsoft サポート
- ROW 関数 |Microsoft サポート
- COLUMN 関数 |Microsoft サポート
- SUMPRODUCT 関数 |Microsoft サポート
※本ボックスにはアフィリエイトリンク(PR)が含まれます。 くわしくは プライバシーポリシー へ。
最新情報をチェックしよう! 2025年7月10日 エクセルでポップアップ表示を作成するには?入力規則・コメント・マクロで使い分け! 2025年7月15日 エクセルの「矛盾した数式」エラーが気になる方へ|意味・消し方・直し方をやさしく解説!ラクエミ
Warning: Attempt to read property 楽しくラクに事務作業を!エクセルの工夫とマクロで、日々の仕事を効率化しています。ラクエミです。コメントを書く コメントをキャンセル
検索
カテゴリー
タグ選択
ナビゲーション
- Excel初心者におすすめ!公式&専門サイト10選|無料で学べる情報源まとめ
- お問い合わせ
- サイトマップ
- プライバシーポリシー
管理者
ラクエミ Warning: Attempt to read propertyアイデア の最新記事4件
- 2026年2月24日
エクセルで土日・祝日に自動で色を付ける方法|条件付き書式で表・カレンダーを見やすく!
- 2026年2月23日
【2026年最新】エクセル互換ソフトおすすめ|無料・フリーで使えるExcel代替ソフトを比較
- 2026年2月16日
VBAでプリンターを指定して印刷する方法|名前指定・PDF・トラブル回避まで解説
- 2025年12月23日