Excel・Calcで頻出の関数の使い方パターン「1セルずつずれながら順番に参照」。INDIRECT(ADDRESS(ROW))
ExcelやCalcなどの表計算ソフトで,「大量のセル参照」をいちいち書くのが面倒な場合がある。
INDIRECT,ADDRESS,ROW の3つの関数を組み合わせて,簡単にセル参照できる。
この組み合わせは,よく使うので暗記しておこう。
サンプル
シート内の1列に,偶数行だけ(一行おき)に a, b, c, d, e と書いてあるとする。
つまり, A2, A4, A6, ・・のセルだけにデータがある。
これを,C1, C2, C3, ・・・にコピーしたい。どうやるのが良いか?
いちいち =A2, =A4, などと打ち込むのはダメ。
対処法
C1セルに下記の内容を打ち込む。
- =INDIRECT(ADDRESS(ROW()*2;1))
そして下にドラッグすればよい。
INDIRECT,ADDRESS, ROW の3関数を組み合わせているのだ。
解説すると,ADDRESS関数にはタテとヨコの座標を渡せる。
INDIRECTは,該当するセルの値を引っ張ってきている。
ROWはセルの行番号。
このように組み合わせれば,
「1セルずつずれながら,順番にセル参照」を
楽に実現できるのだ。
上記の技は,ExcelだけでなくOpenOffice Calcでも使える。
参考:
Excelで,表データを「要約」した円グラフを作成する方法 …SUMIF関数のワイルドカードにINDIRECT(ADDRESS(ROW()))して,情報をまとめる
http://language-and-engineering.hatenablog.jp/entry/20130916/GenerateCircleGr...
- ADDRESS(ROW(),COLUMN()-1) は,「現在のセル(そのセル自体,自分自身)の左側のセル」の参照用の番地を文字列で返す。G1セル上ではこの数式は "F1" として評価される。
- INDIRECT( 文字列 ) によって,セルの番地文字列が,セルとして変換される。文字列をセルに変換している。