- ベストアンサー
エクセル関数で行を抽出したいのですが…
エクセルでsheet1にA2:AQ2034とデータがあります。 A列=コード(重複コードなし) B列=商品名(重複商品名なし) C~AQ=月々の売上(2003.1~2006.5までの月々売上) これをsheet2でA列、A1をタイトル行とし、A2以下にコードを入れると そのコードの行(B~AQ)が抽出されるようにしたいのですが、 関数でどのようにしたらいいでしょうか? ご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
[B2]=IF(ISBLANK($A2),"",VLOOKUP($A2,Sheet1!$A$2:$AQ$2034,COLUMN(),FALSE)) これを、[B2]~[AQx](xは任意の行,2034まで?)にコピーし貼り付けます。 ([B2]を選択しコピー → 数式バーのアドレス「B2」になっているのを直接「B2:AQx」と入力し範囲指定 → 貼り付け とすると簡単です)
その他の回答 (2)
- hirumin
- ベストアンサー率29% (705/2376)
単に検索するなら =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)) となります。 説明下手なので、ヘルプと合わせて見て下さいね。
お礼
とっても丁寧に、ありがとうございます!!! とってもわかりやすいです! 本当にありがとうございます♪
- mshr1962
- ベストアンサー率39% (7417/18945)
Sheet1をA列で昇順に並び替えできてるなら B2=IF($A2="","",LOOKUP($A2,Sheet1!$A$2:$A$2034,Sheet1!B$2:B$2034)) これをAQ2までコピーする。
お礼
早速の回答ありがとうございます。 試したら求めていた結果を得られました! 今回はたまたま昇順になっていたのですが、 昇順にはできない場合(商品を追加等で)は 教えて頂いた式では対応不能でしょうか? 対応策があったら教えていただきたいのですが… 何度もすいません。宜しくお願いします。
お礼
早速回答いただきありがとうございます。 早速試したら求めていた結果が出ました! ちなみに、これは昇順で並び替えしていなくても対応できるのでしょうか?また、ISBLANK、COLUMNを使うのはなぜでしょうか? 初心者で基本的な質問でしたらすいません。 宜しくお願いします。