- ベストアンサー
何故「COLUMN」でB3,C3,D3を指定?
- 現在グーグルスプレッドシートでゴルフ管理のファイルを作成しています。OKWAVEで分からないところは質問しながら作成していました。結果は問題なく出力される以下の式なのですが、よく意味が分からない場所があります。 (1)AE (2)AF (3)AG の式をダブルクリックすると一か所だけまったく意味のない場所が出てきます。結果は問題く、Referenceシートから (1)5 (2)4 (3)3 を拾ってきてくれています。ただ、何故「COLUMN」でB3,C3,D3を指定してるのか全く理解できず、これから管理していくうえでこの部分を理解したく質問させていただきました。
- 以下の式で J2にある単語をReferenceというシートからA1からJ300の範囲内で検索して。。。 そのあと「COLUMN」の所が理解できません。 (1) =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(B3),FALSE) (2) =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(C3),FALSE) (3) =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(D3),FALSE) 添付した、イメージのようにCOLUMNで示している (1)B3 (2)C3 (3)D3 が色が変わっているのですが、まったく意味のない場所なのです。
- 「COLUMN」でB3,C3,D3を指定する理由は、VLOOKUP関数が第三引数として列番号を指定する必要があるためです。VLOOKUP関数は指定された範囲内で検索して、指定された列番号の値を返します。例えば、(1)の式ではB列の値を返すため、COLUMN(B3)と指定しています。つまり、B列の3行目の値を返すことになります。これによって、J2の値を検索して、B列の3行目の値を返すという処理が行われます。同様に、(2)ではC列の3行目の値を、(3)ではD列の3行目の値を返すようになります。COLUMN関数は指定したセルの列番号を返す関数です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
追記。 「セルを横にコピーしたら、式が、列の位置に合わせて、適切に変更される」というのを、解かり易い式で書くと =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN()-COLUMN($AE1)+2,FALSE) と言う式になります。 この式をAE列に書くと「COLUMN()」は「31」に、「COLUMN($AE1)」も「31」になり「COLUMN()-COLUMN($AE1)+2」の結果は「2」になります。 同じ式をAF列に書くと「COLUMN()-COLUMN($AE1)+2」の結果は「3」になります。 「COLUMN()-COLUMN($AE1)+2」と書いてあれば、この部分は「AE列を基準にして2、3、4、5…と言う値になる」と言うのが理解し易いと思います。 この書き方だと「どの列も、まったく同じ数式になる」ので、判り易いし、セルのコピーではなく「数式のコピー」で横方向にコピーする事も出来ます。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>が色が変わっているのですが、まったく意味のない場所なのです。 これは「AEのセルをAF~AMにコピーした時に、いちいち手直ししなくて済むようにするため」です。 セルAEの式 =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(B3),FALSE) は、本来ならば =VLOOKUP($J2,Sheet2!$A$1:$J$300,2,FALSE) と書きます。 欲しい結果は、Sheet2!$A$1:$J$300の「2列目の値」なので、本来は「2」と書きます。 セルAEにこう書いてから、セルAEをセルAFにコピーした場合、セルAFの式 =VLOOKUP($J2,Sheet2!$A$1:$J$300,2,FALSE) を =VLOOKUP($J2,Sheet2!$A$1:$J$300,3,FALSE) に書き変えて「3列目の値」を取ってくるように変更しなければなりません。同様に、AGは「2を4に」、AHは「2を5に」、AIは「2を6に」手作業で変更しないとなりません。 ですが、そういう書き換えをAF~AMの列で行なうのは面倒なので、セルAEに =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(B3),FALSE) と書いておくのです。 そして、AEセルをAF~AMセルにコピーすると、自動的にB3がC3に、B3がD3に、B3がE3に書き換わってコピーされます。 つまり、手作業で「2を3に」「2を4に」「2を5に」書き変える、と言う手作業が不要になるのです。 言い替えれば「横方向にセルをコピーしたら、式の内容が、列の位置に合わせて、適切に書き換わってくれるようにしてある」のです。
- SI299792
- ベストアンサー率47% (773/1617)
COLUMNは、列番号を求める関数です。 COLUMN(B3)は2 COLUMN(C3)は3 になります。そのようにに置き換えても、何の問題もないし、その方が判りやすいです。 それでは、なぜわざわざCOLUMN(B3)としたのか、 これは、コピペの為です。この書き方なら、 AEだけ入力して、後右にコピペすればいいわけです。 =VLOOKUP($J2,Sheet2!$A$1:$J$300,COLUMN(B3),FALSE) =VLOOKUP($J2,Sheet2!$A$1:$J$300,2,FALSE) 全く同じですが、上のように書けば、横にコピペすればB3はC3に代わります。下のように書けば、その後、1つ1つ式を変更しなければならないので大変です。 私は、このようなやり方があったのかと感心しました。
お礼
SI299792さま こんなに早く適切な返答をいただきましてありがとうございました。 お陰様で問題を解決することができました! 本当にありがとうございました!