VLOOKUPとCOLUMN その2

以前、ExcelでSheet1のA列にある文字を検索、検索値と一致したその行に対応するZ列の値をVLOOKUPで拾ってくる場合、
=VLOOKUP(検索文字列,'Sheet1'!A:Z,COLUMN('Sheet1'!Z1),FALSE)
こんな感じで書いた方が列の挿入に強くていいんじゃない?ってことをここで書きましたが、それの続き。
上のやり方では、まだ甘い・・・。浅はかでした・・・。上のやり方の場合、A〜Z列に1列挿入があった場合は、
=VLOOKUP(検索文字列,'Sheet1'!A:AA,COLUMN('Sheet1'!AA1),FALSE)
これで問題なし。しかしながら、A列以前に1列、挿入されると・・・。
=VLOOKUP(検索文字列,'Sheet1'!B:AA,COLUMN('Sheet1'!AA1),FALSE)
B〜AA列の、26行目を読んで欲しいのに、これでは27行目を読みに行ってしまう。
ということで、最初から、こう書けば良いんだろうなぁ。
=VLOOKUP(検索文字列,'Sheet1'!A:Z,COLUMN('Sheet1'!Z1)-COLUMN('Sheet1'!A1)+1,FALSE)
こうすれば、A列より前に1列挿入されても、
=VLOOKUP(検索文字列,'Sheet1'!B:AA,COLUMN('Sheet1'!AA1)-COLUMN('Sheet1'!B1)+1,FALSE)
に書き代わって、うまくいくだろうと。
さらに、実際使うときなんかは、本当は、
=VLOOKUP(検索文字列,'Sheet1'!$A:Z,COLUMN('Sheet1'!Z$1)-COLUMN('Sheet1'!$A$1)+1,FALSE)
こんな感じで書くのが良いかなぁ。個人的に作っているデータ用のシートの形式が、A列目に人名、また1行目には項目名が入っているというものなので、A列の人名にヒットする行の、ある列の内容を読みに行く、そして、COLUMNで読み出されるセルは、1行目から動かさないようにすれば、その行にはデータでなく、項目名が入っているので、削除される事はなく、参照先がなくなって困る事態は発生しない、きっと・・・と考えたのでした。
まぁ、自分の中で使えればいいし、A列以前に列を挿入されることもないと思うので、きっと適当でいいのですが。・・・でも、A列以降に列を挿入という部分と、行の削除を考えたときにCOLUMNでは1行目しか参照しないという、この2点は、しっかりしておかないと。
実際、最初全然気付かずに、自分が作ったこういうブックで、それを利用している職員さんがいじったときに、列を挿入して滅茶苦茶に、行を削除して滅茶苦茶に、ということが起きていました。