質問: エクセル関数で行を抽出したいのですが... エクセルでsheet1にa2:aq2034とデータがあります。 a列=コード(重複コードなし) b列=商品名(重複商品名なし) c~aq=月々の売上(2003.1~2006.5までの月々売上) これをsheet2でa列、a1をタイトル行とし、a2以下にコードを入れると そのコードの行(b~aq)が抽出されるようにしたいのですが、 関数でどのようにしたらいいでしょうか? ご教授お願いします。
回答: 単に検索するなら =vlookup( $a2 , sheet1!$a$2:$aq$2034 , column() ,false) 【$a2】 の値を 【sheet1!$a$2:$aq$2034】 の範囲の1列目から検索し、 見つかった行の【column()】列目の物を取得します。 【false】 は、検索範囲が"ソートされていなくても"検索値と同一の物しか検出させないというもの。 【column()】はその関数の書かれた列番を返すのです。 この式をc列に書いた場合、c列はaから数えて3番目なので =vlookup(a2,sheet1!$a$2:$aq$2034, 3 ,false) この式をaq列に書いた場合、aq列はaから数えて43番目なので =vlookup(a2,sheet1!$a$2:$aq$2034, 43 ,false) と、書いたセルの列に応じて自動で変動するのです。 式を書く上で、列毎に増加する数字は、column()を使うと便利ですよ。 ただ、上に書いた式のままだと、a列が空白の場合は、検索すべき値がないのでエラーがでてしまします。 エラー表示を避けるため、a2がエラーの時は空欄にする処理を追加します。 【isblank(a2)】は 「a2」が空なら「true」、空でなければ「false」を返します if文に組み込むと、 =if(isblank(a2), [true〈a2が空の時〉の処理] , [false〈a2が空でない時〉の処理]) となります。 これに処理を組み込んで、 =if(isblank(a2), [空欄にする] , [vlookupで検索する] =if(isblank($a2),"",vlookup($a2,sheet1!$a$2:$aq$2034,column(),false)) となります。 説明下手なので、ヘルプと合わせて見て下さいね。