Excelで文字列を串刺し(?)にする(その3)
どういう仕組みなのか、説明してみる。
シート名:集計
A B
1 校名 回答
2 □中
3 △中
4 ○中
B2:=INDIRECT(A2&"!"&CELL("address",B2))
まず、CELL("address",B2) は、$B$2というセル番地を示している。
そして、A2セルには、”□中”という文字列が入力されているので、
=INDIRECT(A2&"!"&CELL("address",B2)) は
=INDIRECT("□中!$B$2") ということになる。
INDIRECTは、文字列をアドレスに変えてくれるので、
結局、B2セルには、= □中!$B$2 という数式が入力されていることと同じというわけ。
セル番地を参照するので、
B2:=INDIRECT(A2&"!"&CELL("address",B2)) であって
B2:=INDIRECT(A2&"!"&B2) ではだめです。
この関数一つ作れば、あとはコピーで集計シートがいくつあっても問題なく、1つにまとまります。
いやー、長年の悩みがすっきりして、気持ちいいー!
それにしても、INDIRECT関数をもう少し、研究する必要がありそうです。
シート名:集計
A B
1 校名 回答
2 □中
3 △中
4 ○中
B2:=INDIRECT(A2&"!"&CELL("address",B2))
まず、CELL("address",B2) は、$B$2というセル番地を示している。
そして、A2セルには、”□中”という文字列が入力されているので、
=INDIRECT(A2&"!"&CELL("address",B2)) は
=INDIRECT("□中!$B$2") ということになる。
INDIRECTは、文字列をアドレスに変えてくれるので、
結局、B2セルには、= □中!$B$2 という数式が入力されていることと同じというわけ。
セル番地を参照するので、
B2:=INDIRECT(A2&"!"&CELL("address",B2)) であって
B2:=INDIRECT(A2&"!"&B2) ではだめです。
この関数一つ作れば、あとはコピーで集計シートがいくつあっても問題なく、1つにまとまります。
いやー、長年の悩みがすっきりして、気持ちいいー!
それにしても、INDIRECT関数をもう少し、研究する必要がありそうです。
ソフトウエア | - | trackbacks (0)