advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 7930 for VLOOKUP (0.002 sec.)
[[20060307155749]]
#score: 3346
@digest: 18c14b87198b5e23513168ac606ee13f
@id: 20682
@mdate: 2006-03-10T09:04:25Z
@size: 11456
@type: text/plain
#keywords: 未登 (18131), ル型 (13985), ドb (13729), 偽( (13623), 真( (11794), ト4 (11465), chao (11346), 理式 (10839), 論理 (10443), iserror (9756), 10000 (9654), ブー (9184), ト3 (8427), 。// (8289), 録") (6866), 理値 (6825), vlookup (5999), 値化 (5650), ト2 (5054), 工場 (4081), false (3760), シー (2993), 余談 (2863), ート (2380), アレ (2359), 評価 (2319), countif (2028), 数値 (1556), 登録 (1393), 数式 (1299), ンジ (1016), 関数 (890)
『IFとVLOOKUPの組み合わせ方』(のんきち)
winXP,Excel2002使用 シート2にコードbニ、得られる商品名、製造時間、品質、その他もろもろが入っています。 シート1のA1にコードb入れて、 B2セルにVLOOKUP('シート1'!$A1,'シート2'!$A$1:$B$10000,2,FALSE) という数式を入れて、コードbゥら商品名を取り出していたのですが、 シート2(A工場)だけではなく、 シート3(B工場),シート4(C工場)にもシート2と同じようなものが入っていて、 シート2で見つからなかったら、シート3で探す。 シート3で見つからなかったら、シート4で探す。 ってことをしたいんですが、 IF式との組み合わせですればいいんだろうなあとは思えるんですが、どうすればよいのか見当がつきません。 どなたかご教授いただけないでしょうか? ---- ISERRORを組み込んだらいかがでしょうか? =IF(ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=0, VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE), IF(ISERROR(VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE))=0, VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE), VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE))) (chao) ---- chao様、レスありがとうございます。 参考にさせていただき、以下で部分的に出来ました。 ただ、なぜか#N/Aが出てくるときがあるんですよね・・・。 =IF(ISERROR(VLOOKUP($A1,'シート2'!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,'シート3'!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,'シート3'!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,'シート4'!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,'シート3'!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,'シート2'!$A$1:$B$10000,2,FALSE)),"未登録"))) =VLOOKUP('シート1'!$A1,'シート2'!$A$1:$B$10000,2,FALSE)の式を使っていたときは、 シート2でA列に空白セルがあったり、重複してたりしてもちゃんとB列を読み込んでくれたんですが、今回はシート3にあるコードbヘちゃんと読み込んでくれるのですが、 シート2・シート4のコードbヘ読み込んでくれません。 上記の数式での間違いを教えて欲しいです。 ちなみにA列に同じコードbナすとB列は必ず同じになっています(シート2・3・4) (のんきち) ---- ISERROR関数は、エラー値が出たらTRUEを返す関数です。 組み方を再考する必要があると思いますが? (chao) ---- ISERROR関数に「=0」入れたくないのであれば、 =IF(ISERROR(VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE)), "未登録",VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE))), VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE))) でしょうか?(ちょっとかっこの位置が不安) (chao) ---- 何回もすみません。そしてご指摘ありがとうございます。 =0っていうのが、私の頭では理解できなくて、何回やっても#N/Aが出てくるので、 IF関数っぽく(?)勝手にいただいた数式をアレンジしてしまいました。 確かに、同じことをしているとするならば、 ( )だけより、=0でくくった方が数式もきれいでわかりやすいですよね。 これからもう一度検証しなおしてみます。 そしてそしてもしよろしければ、=0の意味を教えてもらえませんか? (のんきち) ---- =IF(ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=0, VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE), IF(ISERROR(VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE))=0, VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE), IF(ISERROR(VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE))=0, VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE),"未登録"))) ってするんですけど、なぜか『未登録』としか出てこないです。 ちゃんとコードbヘシート3にあるはずなんですが・・・。 データベースとなっているシート2・3・4で、 コード(A列)が重複していたり、空白があったりすると機能しなくなりますか? VLOOKUP関数だけだと、空白があっても、重複していても 目的のものをひっぱってこれていたんですが。 関数の考え方に問題があればご指摘ください。 宜しくお願いします。 (のんきち) ---- =0をいれないで、(chao)さんが最後に示されている数式でいかが? =IF(ISERROR(VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE)), IF(ISERROR(VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE)), "未登録",VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE)), VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE)) 数式バーに左横に=かfxって記号があると思うので、それをクリックすると数式の編集画面が出ます。 そこで、数式バーの任意の位置をクリックすると、関数の意味やら引数の意味やら簡単に教えてくれるので、 数式のチェックができます。 そこを見るとわかるかと思うんですが、ISERROR(数式)はTRUEかFALSEを返すので、=0 だと FALSEになっちゃうようです。なので、未登録が常に出てくるんではないでしょうか〜 怪しげな解説だけではなんなので…こんな方法でも〜 =IF(COUNTIF(シート2!$A$1:$A$1000,$A1),VLOOKUP($A1,シート2!$A$1:$B$10000,2,FALSE), IF(COUNTIF(シート3!$A$1:$A$1000,$A1),VLOOKUP($A1,シート3!$A$1:$B$10000,2,FALSE), IF(COUNTIF(シート4!$A$1:$A$1000,$A1),VLOOKUP($A1,シート4!$A$1:$B$10000,2,FALSE),"未登録"))) (かなれっと) ☆当方Excel2000で確認。 ---- かなれっと様ありがとうございます。 chao様作成の=0なしタイプだと、 『この関数に対して、多すぎる引数が入力されています。』 と言われてしまい、その他にアレンジもきかせられず、使えませんでした。 かなれっと様作成の数式で、やりたいことが完璧に!!出来ました。 chao様、かなれっと様ありがとうございました。 Thanks ☆☆** v(o^▽^o)v**☆☆ Thanks 数式の編集画面で、ISERROR(数式)の説明を見てもよくわからなかったのですが、 かなれっと様の説明で、納得できました。 ただ、COUNTIFって個数を返すものですよね? なぜ、IF式の論理式のところに入れられたのが不思議です・・・? (のんきち) ---- あ、やっぱり^^; COUNTIFでなんで〜?というのは実は私もわからなかったのですが、こちらのスレッドで(代奈)さんに教えていただきました。 [[20050912134040]]『答えを空欄にしたい』(あお) COUNTIFの結果がある =TRUE、ない =FALSE、ということのようです。 (かなれっと) ☆ISERRORの式は、カッコの位置なのかしら…? ちょっと多かったようなので、 こっそり減らしたんですが、、検証は…時間のあるときに^^; ---- IF関数の「論理式」は基本的に論理値でなければならないと思いますが、 「論理式」の部分に数値が返る場合は 0を FALSE 、それ以外の数値を TRUE と「みなす」内部処理が行われている と推測します。 逆に数値化すると =N(TRUE) =1 =N(FALSE) =0 ちなみにVBEブール型変数のヘルプには下記のように書かれています。 ////////////////////////////////////////////////////////////////////////// 他の数値型をブール型の値に変換すると、0 は偽 (False) になり、0 以外の値は すべて真 (True) になります。一方、ブール型の値を他のデータ型に変換すると、 偽 (False) は 0、真 (True) は -1 になります。 ////////////////////////////////////////////////////////////////////////// VBAではTrueを数値化すると-1になるので、ワークシートでの数値化仕様と混同して えらい目にあったことが。気をつけましょう。 (みやほりん)(-_∂)b ---- かなれっと様、COUNTIFとISERRORの式はTRUEとFALSEが逆だということですかね? ISERRORの数式のカッコを検証してみたのですが、 数も位置も一応私がアレンジしたもので問題なかったのですが ネストが多かったのですかね? もしお時間ございましたらまたご教授ください。 みやほりん様、レスありがとうございます。 >逆に数値化すると 以下からさっぱり意味がわかりません(汗) VBAってマクロの記録くらいでしか使ったことないのですが、 奥が深いですね。 ひとつ教えていただきたいのですが、 論理値と数値の違いは A1(セル名)と10(COUNTIFで返された値)の違いということですか? (のんきち)ちょっと推敲 ---- >A1(セル名)と10(COUNTIFで返された値)の違いということですか? 違うと思いますよ。 論理値 (基本的に)論理式の結果の値 論理式とはぶっちゃけ、「ウソかホントウか」を判断する式。 B1に=A1=5 という式を入力します。 A1が 5 なら TRUE(ホントウ) A1が 5以外ならFALSE(ウソ) がそれぞれセルに表示されます。 この TRUE/FALSE がIF関数の「論理式」の部分で必要。 たとえば、A列で数値5が一個でもあれば"○"を表示しなさい、という場合は =IF(COUNTIF(A:A,5)>0,"○","") COUNTIF(A:A,5)>0 はA列の5の数値の数によって TRUE か FALSE が返ります。 ところが、次のように書いても結果は同じです。 =IF(COUNTIF(A:A,5),"○","") COUNTIF(A:A,5)の結果は数値であって論理値ではありませんが・・・ helpにはこうあります。 ////////////////////////////////////////////////////////////////////////// IF(論理式,真の場合,偽の場合) 論理式 真または偽のどちらかに評価できる値または式を指定します。 ////////////////////////////////////////////////////////////////////////// つまり、0は「偽として評価できる値」、0以外の数値は「真として評価できる値」 とされている、ということです。明言はありませんが。 「ある、ない」を判断する、というイミでは本来は「>0」を書くべきです。 ですが、数値が論理値として「みなされること」、また、 「>0」の分、数式が短くなるとの理由で後者を採用する人がいる、ということです。 【余談:論理値の数値化】 >逆に数値化すると の以下は余談でした。混乱させて申し訳ない。 FALSEは0に、TRUEは1に変換できますよ、とそれだけです。 以下も余談。 同じ処理をIF関数を使わずに次のように書くこともできます。 =REPT("○",N(COUNTIF(A:A,5)>0)) REPT関数は「文字列を?回繰り返す」という関数です。0回なら""。 数式のお遊びです。お気になさらずに。 【さらに余談】 =TRUE=0 も =FALSE=0 も常に FALSE。 だから ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=0 とかくと常にFALSE。 「ISERRORがFALSEのとき(VLOOKUPがエラーでないとき)」としたかったようですが、 残念ながら FALSE は 0 とはみなされません。 COUNTIFの0がIF関数の中でFALSEとみなされるのとは区別すべきです。 IF(ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=FALSE, VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE)),IF(・・・・ 「[VLOOKUPがエラーであるという命題が偽である]という命題が真であればVLOOKUPを計算しなさい、偽のときは・・・」 という書き方ならできたかもしれません。が、書いているほうがわけがわからなくなります。 (みやほりん)(-_∂)b ---- みやほりんさま 解説ありがとうございました。 不用意な回答で混乱させてしまいました。 学校ではいろいろと学ばせていただいておりますが、大変勉強になっています。 ブール型の変数0はFALSEであると考えていたのですが、甘かったようです。 (chao) ---- 家事の合間にちょこちょこと書いてたら… みやほりんさんのしっかりした説明があるので、かなれっとのは省略とさせていただきます^^; う〜ん、面白い^^ そして、勉強になります♪ ありがとうございました m(_ _)m (かなれっと) ---- ---- みやほりん様、朝から何10回と読み直して、ようやく理解し始めました^^; IF(ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=0 と IF(ISERROR(VLOOKUP(!$A1,シート2!$A$1:$B$10000,2,FALSE))=FALSE は、違うものなんですね。(時間かけてそこまでかよっ--;) chao様、最初に雛形を作っていただいたので、頭の整理が出来てすごく助かりました。 かなれっと様、お忙しいところ数式考えていただいてありがとうございました。 皆様ありがとうございました。 私も精進して頑張ります。 (のんきち) ---- かえって難しい説明をしてしまったかも(汗 VBEのヘルプの ////////////////////////////////////////////////////////////////////////// 他の数値型をブール型の値に変換すると、0 は偽 (False) になり、0 以外の値は すべて真 (True) になります。 ////////////////////////////////////////////////////////////////////////// と、IF関数のヘルプの ////////////////////////////////////////////////////////////////////////// IF(論理式,真の場合,偽の場合) 論理式 真または偽のどちらかに評価できる値または式を指定します。 ////////////////////////////////////////////////////////////////////////// この二つを「状況証拠として」・・・・ IF関数の「論理式」の部分では数値(を返す数式も含めて)を引数に指定すれば 必ずしも TRUE/FALSE でなくても良いですよ、 ただし、「FALSEの替わりとしての0」といつもは考えちゃダメよ、 といいたかったのです。 (みやほりん)(-_∂)b ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200603/20060307155749.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97023 documents and 608156 words.

訪問者:カウンタValid HTML 4.01 Transitional