概要
ROWは「セルや範囲の“行番号”」を返す関数です。1行目は1、2行目は2…というシート上の絶対行番号を返します。参照を省略すると「式があるセルの行番号」、範囲を渡すと(Microsoft 365の動的配列では)範囲内の行番号の配列を返します。縦方向の連番作成、相対インデックス、INDEXやOFFSETの行指定などで活躍します。
基本の使い方
書式
=ROW([参照])
参照を省略すると「この式のあるセルの行番号」。セルや範囲を渡すと、そのセル(古いExcelは左上セル)や範囲内の行番号(Microsoft 365は配列)を返します。
例
=ROW() // そのセルの行番号
=ROW(A1) // 1(1行目)
=ROW(A10) // 10(10行目)
=ROW(B2:B5) // {2;3;4;5}(Microsoft 365で縦方向に返る)
具体例
縦方向の連番を作る(開始行からの相対連番)
開始セルをA2(行2)として、A2→1、A3→2…としたい場合:
=ROW()-ROW($A$2)+1
縦にコピーしても「開始行からの連番」が安定します。
範囲の行番号一覧(動的配列)
=ROW(A2:A10)
{2;3;…;10} を縦に返します。行フィルタやインデックス作成に便利です。
INDEXと組み合わせて“n行目”を可変取得
範囲のn行目を取得(nをROWで自動生成して縦コピーに強い式に)
=INDEX($B$2:$B$20, ROW()-ROW($B$2)+1)
縦にコピーすると1,2,3…と行指定が自動で進みます。
応用テンプレート
奇数・偶数行の判定(ストライプ塗り)
=ISEVEN(ROW()) // 偶数行ならTRUE
=ISODD(ROW()) // 奇数行ならTRUE
条件付き書式に使うと見やすいストライプが作れます。
サンプル抽出(n行おきに抽出)
n=5行おきの行を抽出したい条件(TRUE/FALSE)
=MOD(ROW()-ROW($A$2), 5)=0
ヘッダーを除いた相対行番号(テーブル外でも応用)
ヘッダーが1行ある前提で、データ1行目を1にする:
=ROW()-1
行番号から行見出し(ADDRESS+SUBSTITUTEで行番号→文字は不可だがセル参照は可)
行番号rと列番号cからセル文字列参照を作る:
=ADDRESS(r, c, 4) // 例: r=5, c=2 → "B5"
よくあるつまずきと対策
範囲で1つしか返らない
古いExcelでは ROW(A2:A10) が単一値(左上セル=2)になります。複数値を扱いたいときは配列数式(Ctrl+Shift+Enter)か、Microsoft 365の動的配列を利用してください。
絶対参照を忘れて連番が崩れる
基準セルに $ を付けないと、コピーで基準が動いてズレます。
=ROW()-ROW($A$2)+1 // $ を必ず付ける
行“数”と行“番号”の取り違え
“行数”は ROWS(範囲内の行の個数)、“行番号”はROWです。
=ROWS(A2:A10) // 9
テーブル(構造化参照)との併用
テーブルでは行番号より「行そのもの」を扱うことが多いです。構造化参照で可読性を優先すると良い場合があります。
=INDEX(売上[金額], 行番号)
例題
問題1: この式のあるセルの行番号をB2に表示してください。
解答例:
=ROW()
問題2: セルA10の行番号をC2に表示してください。
解答例:
=ROW(A10)
問題3: 範囲A2:A6の各行番号をD2から縦に表示してください(Microsoft 365)。
解答例:
=ROW(A2:A6)
問題4: 開始行A2を基準に“相対行インデックス”をE2に表示(A2→1、A3→2…)。
解答例:
=ROW()-ROW($A$2)+1
問題5: B2:B20の1行目から順番にINDEXで値を取り、F列に縦コピーで一覧表示してください。
解答例:
=INDEX($B$2:$B$20, ROW()-ROW($F$2)+1)
まとめ
ROWは「行番号」を取得する基本関数で、縦方向の連番、相対インデックス、INDEX/OFFSETの行指定に強みがあります。行“個数”はROWS、奇数・偶数判定はISODD/ISEVENを併用。基準行に絶対参照を付け、古いExcelと動的配列での挙動差を押さえると、テンプレートが安定し、縦コピーで気持ちよく動く式が作れます。
