エクセルで1行おきにデータを取り出すには、=INDEX($B$3:$B$12,(ROW()-2)*2-1) のように INDEX関数で「1・3・5…番目」を指定して、下へコピーします。Microsoft 365 なら =CHOOSEROWS(B3:B12,SEQUENCE(5,1,1,2)) のように1つの式で取り出すこともできます。
「氏名・電話・氏名・電話…」のように交互に入ったデータを、氏名だけの一覧にするときに便利です。この記事では、1行おき・n行おきに取り出す方法を、実際の Excel の画面で説明します。
練習用Excelファイル(無料ダウンロード)
この記事と同じ、氏名と電話が交互に入ったデータです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次
1行おき・n行おきに取り出す式の一覧
| 方法 | 式 | 取り出せる行(実機) |
|---|---|---|
| INDEX(コピーして使う) | =INDEX($B$3:$B$12,(ROW()-2)*2-1) | 1・3・5・7・9番目 |
| CHOOSEROWS(365) | =CHOOSEROWS(B3:B12,SEQUENCE(5,1,1,2)) | 1・3・5・7・9番目(1つの式) |
| FILTER(365) | =FILTER(B3:B12,MOD(ROW(B3:B12)-ROW(B3),2)=0) | 1・3・5…番目 |
| n行おき(3行ごと) | =INDEX($B$3:$B$12,(ROW()-2)*3-2) | 1・4・7・10番目 |
INDEX関数で1行おきに取り出す
氏名だけを出したいセル(D3)をダブルクリックし、=INDEX($B$3:$B$12,(ROW()-2)*2-1) と入れます❶。D3 は3行目なので ROW()-2 は 1、×2-1 で 1番目になります。D4 では 3番目、D5 では 5番目…と、2つずつ進みます。

Enter を押して D7 までコピーすると、氏名だけが取り出せました❷。電話番号を取り出したいときは、(ROW()-2)*2(2・4・6…番目)にします。

n行おきにするときの考え方
「何番目を取り出すか」を (ROW()-最初の行の1つ上)×n−(n−1) で作ります。3行ごとなら ×3−2 で 1・4・7…番目です。実機で OFFSET を使った =OFFSET($AA$1,(ROW()-1)*3,0) でも、項目1・4・7・10 と3行おきに取り出せました。
うまくいかないときの確認表
| 症状 | 原因 | 対処 |
|---|---|---|
| 1行ずれる | ROW() から引く数が合っていない | 式を入れた行の番号に合わせて、最初が 1 になるように引く |
| #REF! になる | 取り出す番号が範囲の外になった | コピーする行数を減らす・範囲を広げる |
| コピーすると範囲がずれる | $ が無い | $B$3:$B$12 のように $ を付ける |
| #NAME?(CHOOSEROWS) | Microsoft 365 以外の版 | INDEX の方法を使う |
よくある質問
1行おきに空白の行を入れたいです。
並べ替えを使う方法があります。となりの列に 1・2・3… と 1.5・2.5… を入れて並べ替えると、1行おきに空白が入ります。
1行おきに色を付けたいです。
1行おきに色を付ける方法を参照してください。
練習用Excelファイル(無料ダウンロード)
氏名と電話が交互に入ったデータです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

コメント