何故「COLUMN」でB3,C3,D3を指定?

このQ&Aのポイント
  • 現在グーグルスプレッドシートでゴルフ管理のファイルを作成しています。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関数は指定したセルの列番号を返す関数です。
回答を見る
  • ベストアンサー

何故「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」する必要があるのか理解できる方がいましたら教えて頂けないでしょうか。 どうか宜しくお願いいたします。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.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)

  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.2

>が色が変わっているのですが、まったく意味のない場所なのです。 これは「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
  • ベストアンサー率48% (716/1482)
回答No.1

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つ式を変更しなければならないので大変です。 私は、このようなやり方があったのかと感心しました。

megumi199
質問者

お礼

SI299792さま こんなに早く適切な返答をいただきましてありがとうございました。 お陰様で問題を解決することができました! 本当にありがとうございました!

関連するQ&A

  • IFとVLOOKUP

    DのコラムにIDaa001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートaa DのコラムにID bb001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートbb 上記二つのシートからデータを参照したいシートccが有ります。 シートccに入っているIDによって、参照するシートを変えたいので、IF関数を使ってみましたがうまくいきませんどの様にしたら良いのでしょうか? ちなみに私の書いた式は下記です =IF(A3=aa,VLOOKUP(D3,aa!A2:B99,2,FALSE),VLOOKUP(D3,bb!A2:B213,2,FALSE)) どうしたら良いのか分からなく、IDの頭2個のアルファベットをLEFT関数で抜き出して、Aのコラムに貼り付けて上記の式をつくってみましたがダメでした。 よろしくおねがいします。

  • VLOOKUP関数が#N/Aで使えません

    こんにちは。 エクセルで表を作っています。 VLOOKUP関数を使いたいのですが、エラー#N/Aが出て使えません。とてもシンプルな式なのに、何がだめでできないのか全く解かりません。 式は、=VLOOKUP(C3&D3,A7:D12,4,FALSE)です。 ちなみに、=VLOOKUP(C2,B7:D12,3,FALSE)にはちゃんと反応して数値を返してくれます。違いは検索値だけなのですが、数字になっているので、文字列に指定もしました。違うセルで=C3&D3は返してくれています。 何がいけなくてできないのか、教えていただけると助かります。 よろしくお願いします。

  • エクセルVLOOKUPなど範囲をシート2つから

    今まで、「受注管理」というシートから検索していたのですが、シートを2枚にわけて「シート2」からも同じ条件で検索する場合、式のどの部分に「シート2」を追加したらよいのでしょうか? 試行錯誤していますが、うまくいきません。 式の一部は、以下の通りです。 もちろん、「受注管理」と「シート2」は同じ構成になっています。 検索値が、どちらかのシート内にあるということです。 =OFFSET(受注管理!$C$2,MATCH($H$2,受注管理!C:C,0)-1+J19,0,1,1) =IF($H$2=$K19,OFFSET(受注管理!$J$2,MATCH($H$2,受注管理!$C:$C,0)-1+$J19,0,1,1),"") =VLOOKUP(H2,受注管理!C:I,3,FALSE)&IF(VLOOKUP(H2,受注管理!C:I,4,FALSE)=""," 御中",CHAR(10) & VLOOKUP(H2,受注管理!C:I,4,FALSE) & " 様")

  • =IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

    いつもお世話になってます。 以下の関数式について、お時間がありましたらどうぞご教示ください。 =IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE)) 「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」 純粋になんでこのような構文になるのかが解りません。 1.ISNAってそもそもなんでしょう? 2.同じ式を繰り返すのはなぜ? (模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。) ・参考となる他所のページがあれば教えて下さい。 ・素人です。お手柔らかにお願いします。 (エクセル2003)

  • VLOOKUPのエラーについて

    教えて下さい。 =IF(ISERROR(VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE)),"",VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE))+IF(ISERROR(VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)),"",VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)) という数式を使っています。 最初のIF文(Shee2)については有効なのですが、それならと、欲張って他のシートも参照できるように、+の後にIF文(Sheet3)を追加したら#VALUE!が表示されます。 何がいけないのでしょうか?

  • 2つのSheetの数値を検索したい

    エクセルで2つのSheetのデータの個数を検索させたいのですが、 エラー値は空白にしたいので、 =IF(ISNA(VLOOKUP(B2,Sheet2!$A$2:$B$2607,2,FALSE)),"",VLOOKUP(B2,Sheet2!$A$2:$B$2607,2,FALSE)) という式を作ってうまくいったのですが、 この式に新たに同じsheet1の範囲(A2:B300)を追加したいのですが、 うまくいきません。 このB300はB400、B500というように日々増えていきます。 どのような式にすればいいでしょうか。

  • excel ファイル名の指定方法

    vlookupを使用して、数多くのフォルダ内のセル参照をしようとしています。 その中で、 =IF(ISERROR(VLOOKUP(B$2,'C:\Documents and Settings\user\デスクトップ\構成\[2093.xls]Sheet1'!$A$4:$F$28,6,FALSE)),"-","○") という式を使用しています。 この2093に相当するファイルが構成のフォルダに2094,2095,2096の様に4桁で多数存在しています。 またA列には、ファイル名に相当する値がセットされています。 A3セル;2093 A4セル:2094 A5セル;2095 … の通りです 上記の式がB3に入っているとして、2094に相当する行のB4は、 =IF(ISERROR(VLOOKUP(B$2,'C:\Documents and Settings\user\デスクトップ\構成\[2094.xls]Sheet1'!$A$4:$F$28,6,FALSE)),"-","○") の様に設定したいのです。 1つ1つ手動での修正でなく、コピーペーストみたいな感じで、 いっきに対応可能な方法はありませんでしょうか?

  • R1C1形式。別シート参照時について

    題名が意味不明ですが申し訳ありません。 下記のような数式があります。 こちらのサイトで教えていただいた関数であり、すごく難しくて私もはっきり理解できてはおりませんが、R1C1形式で、セルを参照するようになっているのかな~というところまで、理解できました。 =IF(AND(ISNUMBER(INDEX($D:$D,ROW())),INDEX($D:$D,ROW()+1)=""),SUM(INDIRECT("R"&MATCH("゛",OFFSET(INDIRECT("R1C"&COLUMN($B:$B),FALSE),,,ROW()),-1)&"C"&COLUMN($D:$D)&":R"&ROW()&"C"&COLUMN($D:$D),FALSE)),"") この数式は、’同じシート’の、D列なり、特定のセルなり、、を参照しておりますが、この数式を別のシートのセルに入力して、そこから、このシートを参照させようと思います。 つまり、このシートはもともと’入力用’という名前のシートなのですが、別のシートから、この’入力用’シートの列なりセルなりを参照して値を求めたいのです。 この場合、入力用!というような文字を入れればいいのは知っているのですが、式が複雑すぎるため、どこにどう記入してよいのかがわかりません。自分なりにいろいろやってはみたのですが、REF#となってしまいました。 どこにシート名を入れればうまくいくのか教えていただけないでしょうか。 何卒お願いいたします。

  • 複数のシートに跨ってVLOOKUPするには?

    複数のシートに跨っているデータをVLOOKUPで参照しようとしています。 1つめのシートには コード番号 シート名 の2つのカラムがあり、コード番号ごとに どのシートを参照すればよいかわかるようになっています。 参照されるほうのシートには コード番号 値 の2つのカラムがあります。 このシートが数十存在しますが、1つのシートにまとめることは出来ません。 1つ目のシート上で、 =VLOOKUP(A1,CONCATENATE(B1,"!A:B"),2,false) などと試してみたのですが、うまくいかないようです。 何か良い方法はないでしょうか。

  • AかBのどちらかを入力するとCにデータが出る方法

    VLOOKUP関数を使った在庫管理の表を作成するにあたって、Aのセルには商品コードを BのセルにはJANコードを Cのセルにはそれに対応した商品名が出るようにしたいのです。 参照するデータは別なシートに作成しています。 Aを入力すると B,Cが出るということはできるのですが A(商品コード)がわからずB(JANコード)がわかるときにもC(商品名)が出るようにしたいのです。現在はCのセルに =IF(A1="","",VLOOKUP(A1,別シート!$A$1:$G$20,3,0)) このような数式を使っています。 これでは 「どちらかを入れたら商品名が出る」事はできないので、何か良い計算式はありませんでしょうか。宜しくお願いします<(_ _)>

専門家に質問してみよう