Excelで表を扱っていると、「奇数行だけを取り出したい」「偶数行のデータだけを集計したい」という場面が出てきます。1行おきに色を付けたい、隔週のデータだけを比較したい、といったケースですね。
手作業でコピーしていくのは現実的ではありません。実は、たった1つの数式を入れるだけで、条件に合う行だけを別の場所へ一気に抽出できます。この記事ではMOD・ROW・FILTERという3つの関数を組み合わせ、1行おきの抽出をスマートに実現する方法を、つまずきポイントも含めて解説します。
▲ Excel サンプル
仕組みの中心は「ROW」と「MOD」
まずは考え方の土台になる2つの関数を押さえましょう。
ROW関数:行番号を取り出す
ROW関数は、指定したセルの行番号を返します。
=ROW(A2) → 2 =ROW(A5) → 5
引数を省略して=ROW()と書くと、その数式が入っているセル自身の行番号を返します。これが「今、何行目を処理しているのか」を知る手がかりになります。
MOD関数:割り算の余りで奇数・偶数を判定
MOD関数は、割り算の「余り」を返します。
=MOD(7, 2) → 1 =MOD(8, 2) → 0
ある数を2で割った余りが 1なら奇数、0なら偶数 です。つまりROWで取り出した行番号を2で割れば、その行が奇数か偶数かを判定できます。
=MOD(ROW(), 2)
この数式が「1」を返せば奇数行、「0」を返せば偶数行、という具合です。
FILTER関数で一気に抽出する
Microsoft 365 や Excel 2021 以降なら、FILTER関数を使うのが最も簡単です。データがA2:C11に入っているとして、まずは基本形を見てみましょう。
=FILTER(A2:C11, MOD(ROW(A2:A11), 2) = 1)
※注意:この式は「シート上の実際の行番号」を基準にします。 データがA2始まりのため、抽出されるのはシートの3・5・7・9・11行目、つまり「表の2件目・4件目…」です。「表の1件目から数えて奇数」を期待していると結果がズレて見えるので、その場合は次の「表の1件目を基準にしたいとき」を使ってください。
条件を= 0に変えれば偶数行(シート行基準)になります。
=FILTER(A2:C11, MOD(ROW(A2:A11), 2) = 0)
数式を1つ入れるだけで、該当行がスピル(自動的に下方向へ展開)されて表示されます。元データを並べ替えたり削除したりせずに済むのが大きなメリットです。
見出し行がある場合の扱い
実務では1行目に見出しがあることがほとんどです。抽出範囲に見出し行を含めないのがコツです。上の例のようにデータ本体(A2以降)だけを範囲に指定すれば、見出しが混ざったりズレたりする心配はありません。抽出結果の上に、別途手入力やセル参照で見出しを置くと表として整います。
表の1件目を基準にしたいとき
「表の中で1件目・3件目…を奇数扱いしたい」という場合は、開始位置を引いて番号を振り直します。
=FILTER(A2:C11, MOD(ROW(A2:A11) - ROW(A2) + 1, 2) = 1)
ROW(A2:A11) - ROW(A2) + 1で、表の先頭を1とした連番{1; 2; 3; …}が作れます。これを使えば、データがどの行から始まっていても「表としての奇数・偶数」で抽出できます。直感どおりの結果がほしいときは、こちらを主役にすると安心です。
FILTERが使えない環境での代替策
古いバージョンのExcelにはFILTERがありません。その場合は「作業列」を用意する方法が確実です。
- データの隣に空いた列(例:D列)を用意します
- D2に判定用の数式を入れます
=MOD(ROW(), 2)
- 下までコピーすると、各行に0か1が並びます
- D列にオートフィルターをかけ、1だけにチェック すれば奇数行、0だけ なら偶数行が表示されます
表示された結果をコピーすれば、別シートに貼り付けられます。関数が苦手な方にも扱いやすい方法です。
実務での応用例:N行おきの抽出
割る数を変えるだけで「N行おき」の抽出が可能です。使う場所によって式の形が違うので、文脈に合わせて選んでください。
作業列に入れる場合(各セルに1つずつ):
=MOD(ROW()-1, 3) ← 3行おき。0になった行が対象 =MOD(ROW()-1, 5) ← 5行おき
FILTER内で使う場合(範囲に対して判定):
=FILTER(A2:C11, MOD(ROW(A2:A11)-ROW(A2), 3) = 0) ← 3行おき =FILTER(A2:C11, MOD(ROW(A2:A11)-ROW(A2), 5) = 0) ← 5行おき
アンケートデータから一定間隔でサンプリングしたい、大量のログから間引いて確認したい、といった場面で役立ちます。
まとめ
奇数行・偶数行の抽出は、次の3ステップで理解すると簡単です。
ROWで行番号を取り出すMOD(行番号, 2)で奇数(1)か偶数(0)かを判定するFILTERでその条件に合う行だけを取り出す
その際、ROWが返すのはシート上の実際の行番号だという点だけ意識しておきましょう。「表の1件目から数えたい」ときは- ROW(先頭セル)で番号を振り直せば、直感どおりに抽出できます。「2で割った余り」というシンプルな発想さえ押さえれば、N行おきの抽出まで自在にこなせます。ぜひ日々の作業に取り入れてみてください。
関連記事
- 【コピペOK】Excelで最終更新日・作成日を自動表示する2つの方法
- Excelで日付が「45658」など数字になる原因と直し方【3パターン】
- Excelで数字が「E+11」に勝手に変わる!元に戻す&防ぐ全方法【電話番号・コード対応】
- Excelで「####」が表示される原因と直し方|列幅を広げても消えない時も解決
- Excelの「1900/1/0」を消す3つの方法|空白セル・計算結果0を一発解決
- Excel LAMBDA・LET関数の作り方|Claudeに設計を頼めば自作関数はすぐ完成する
- Excelのセルに =CLAUDE_ASK と書くだけ|xlwingsでAIを表計算に組み込む