• ベストアンサー

Excelにおけるシート間の比較について

いつもお世話になっております。 Excel2003の関数(もしくはマクロ?)についての質問です。 シート1に No|管理|項目 01|5000|りんご 02|3000|みかん 03|1000|いちご とあります。 シート2に No|管理| 03|____| 01|____| (____分は未入力セル) とあった場合、未入力セルになんらかの関数を入力して No|管理| 03|1000| 01|5000| と表示させたいのです。 Noの比較まではできるのですが、それがイコールだった場合 管理の番号を入力する、というところでどんな関数を使用すれば 良いのか検討がつかなかったので質問させていただいております。 できるだけ関数でできるとありがたく、識者の方のご教授のほどよろしくお願いいたします。

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

  • ベストアンサー
  • nanasupra
  • ベストアンサー率33% (45/136)
回答No.1

A1セルから順に記載しているとすると シート2のB2セルに =VLOOKUP(A2,Sheet1!A2:C4,2,FALSE) を入力するとできますよ。

michbird
質問者

お礼

早速のご回答ありがとうございます。m(_ _)m できました!!\(^o^)/ VLOOKUPに代表される配列関数は、どうも苦手で避けて 通ってきてしまっていたのですが、こんなに簡単な 関数で望みのことができるなんて目からうろこです! もっと勉強しないといけないですね。(^^; 本当にどうもありがとうございました!!

その他の回答 (1)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

http://oshiete.coneco.net/kotaeru.php3?q=2558656 内容は一致しませんが上記URLをご参照頂き読替ください ほぼこのURL中の私の記載通りですね 転記します ご質問の内容が 「詮索機能を実現するにはどのような構文がありえるのか網羅したい」 と言うこととお見受けしましたので 愚考して式を作ってみました… (*^_^*) この1件だけ出せばいいという内容からすると VLOOKUPに比べやや邪道ですが =CHOOSE(SIGN(SUMPRODUCT((Sheet1!$A$1:$A$3=$A1)*1)-1)+2,"対象外",INDEX(Sheet1!$A$1:$B$3,MATCH($A1,Sheet1!$A$1:$A$3,0),2),OFFSET(Sheet1!$A$1,LOOKUP(1,{1},SMALL((Sheet1!$A$1:$A$3<>$A1)*65555+ROW(Sheet1!$A$1:$A$2),COLUMN(Sheet1!A1)))-1,1,1,1)) =CHOOSE(SUMPRODUCT((Sheet1!$A$1:$A$3=$A1)*ROW(Sheet1!$A$1:$A$3))+1,"対象外",Sheet1!$B$1,Sheet1!$B$2,Sheet1!$B$3) =IF(COUNTIF(Sheet1!A:A,$A1)<>1,"対象外",OFFSET(Sheet1!$A$1,LOOKUP(1,{1},SMALL((Sheet1!$A$1:$A$3<>$A1)*65555+ROW(Sheet1!$A$1:$A$3),COLUMN(Sheet1!A1)))-1,1,1,1)) 最初のは長いですが CHOOSE構文のインデックスの算出法とか OFFSET構文を使っているあたりとか 検索に2件以上ヒットした場合にも右に式をコピーすれば2件目以降の値表示をするとか SMALL構文が扱う配列の作り方とか etc 自画自賛になりますが秀逸なものがあると思います また、元データの位置を1つ下にずらして頂いて 新たに空いたB1に「対象Guy」と入れて頂ければ =LOOKUP(INDEX(LARGE((Sheet6!$A$2:$A$4=$A1)*ROW(Sheet6!$A$1:$A$3),COLUMN(Sheet6!A1))+1,),ROW(Sheet6!$A$1:$A$4),Sheet6!$B$1:$B$4) とか {=INDEX(Sheet6!$A$1:$B$4,LARGE((Sheet6!$A$2:$A$4=$A1)*ROW(Sheet6!$A$1:$A$3),COLUMN(Sheet6!A1))+1,2)} とかも使えますね 最後に、DGET構文やHLOOKUP構文が使えるとなかなかなのですが DGET構文は検出条件の指定に ・見出しと検出キーが縦並びにセットになっていないといけない ・定数配列で指定できない HLOOKUP構文はデータの元フィールドが横向きに並んでいないといけない などの癖があって、ちょっと惜しいのですが使えません 以上が転記 後、過去のWendy02さんの発言に (http://oshiete.coneco.net/kotaeru.php3?q=2551423) こういうものがありました 以下抜粋転記 http://support.microsoft.com/kb/214142/ja 製品[Excel 2000] 用語[配列] で検索して選んでみました。 後は、いろいろググってみてください。 -------------------------------------- 以下は、私が、配列数式を始めて知った場所です。 http://support.microsoft.com/kb/402181/ja [XL2002] n 行おきの合計を算出する方法 (私は、知らなかった↓) http://support.microsoft.com/kb/268001/ja [XL2003] Excel でセル範囲内の一意の要素を数える方法 http://support.microsoft.com/kb/214142/ja [XL] 条件を複数指定して INDEX および MATCH ワークシート関数を使用する方法 http://support.microsoft.com/kb/213916/en-us [XL2000]同じ値がある場合の順番付け Rank Duplicate Values Sequentially in Excel 2000 以上転記 なかなか秀逸ですね 他にも このコーナーで エクセル 検索 関数 をキーにして検索して頂けると http://oshiete.coneco.net/kotaeru.php3?q=2601097 http://oshiete.coneco.net/kotaeru.php3?q=2567478 http://oshiete.coneco.net/kotaeru.php3?q=2554599 http://oshiete.coneco.net/kotaeru.php3?q=2549026 etc これらは凡例こそ違えど意図することは皆同じ エクセルのシート関数での検索です 他にも山ほど出てきますよ 一度ご参照頂けたら幸いです

michbird
質問者

お礼

長文にわたるご回答、どうもありがとうございました。 Excel、比較、などでサイト内検索をかけたのですが、イマイチ 目的のものにぶつからず、こうして質問させていただいてしまいました。 既出のご回答まで転載くださり、ありがとうございます。 >CHOOSE構文のインデックスの算出法とか >OFFSET構文を使っているあたりとか >検索に2件以上ヒットした場合にも右に式をコピーすれば2件目以降の値表示をするとか >SMALL構文が扱う配列の作り方とか これは機能がすごいですね! ぜひ、機会があったら使用させていただきたいと思いました。 ・・・が、どれも初めて使う関数で、どのセルにこの3つの式を 入力すれば良いのか、とか、色々試行錯誤しないと使えなさそうです。(^^; 配列は昔から苦手で、何度かチャレンジしたのですが自力で成功した ためしがなく、最近ではすっかり拒否反応を起こすようになっていました。 が、これを機会にまた時間を見つけつつ勉強していきたいと思います。 ほかにも色々参考例を載せていただき、本当にありがとうございました!!

関連するQ&A