[[20080430092839]] 『if』(いづみっち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『if』(いづみっち)

 ifとVLOOKUPとMATCH関数で作成してみましたが長すぎて他に何か方法はありませんでしょうか。
宜しくお願い致します。

   A  
 1 100  
 2 φ5
 3 A
 4 0.2

 別シート

  A   B   C   D   E   
 1A
 --------------------      
 2       100  150  200 
 --------------------      
 3   φ5  0.2  1.0  1.3
 --------------------      
 4  φ8  0.5  1.2  1.8
 --------------------  
 5    φ10 0.8  1.5  2.0

 A〜Fまで以上のような表があります。
 中の数字は変わり同一ではありません
 
   A      B       C         
 1 H
 --------------------      
 2   φ10〜φ15    1.0          
 --------------------      
 3  φ20以上   1.2           

   A      B       C         
 1 G                      
 --------------------      
 2   φ8〜φ10    1.0             
 --------------------      
 3  φ13以上   1.2 

 A1 A2 A3 はプルダウンメニューから選択し
 A1 はC2 の100 
 A2 はB3 のφ5
 A3 は表のA を選択した場合
 A4 に関数で0.2が入るようにしたいのです。

 =IF($A$3=A,VLOOKUP($A$2,表a,MATCH($A$1,a行,0)0),
 IF($A$3=B,VLOOKUP($A$2,表b,MATCH($A$1,b行,0)0),
 IF($A$3=C,VLOOKUP($A$2,表c,MATCH($A$1,c行,0)0),
 IF($A$3=D,VLOOKUP($A$2,表d,MATCH($A$1,d行,0)0),
 IF($A$3=E,VLOOKUP($A$2,表e,MATCH($A$1,e行,0)0),
 IF($A$3=F,VLOOKUP($A$2,表f,MATCH($A$1,f行,0)0),
 IF($A$3=G,VLOOKUP($A$2>=20,$C$3,$C$2),""),
 IF($A$3=H,VLOOKUP($A$2>=13,$C$3,$C$2),""))))))))

 表aは$B$3:$E$5
 a行は$B$2:$E$2
 とそれぞれ範囲に名前をつけました。

 [Excel2003]
 [WindowsXP]です

    A      B       C         
 1  H
 2    φ10〜φ15   1.0          
 3  φ20以上   1.2           

    A      B       C
 1  G                      
 2    φ8〜φ10    1.0             
 3  φ13以上   1.2 

 ↑これらの表は、結果の表なのですか?別のシートなのですか?
 関数式を見る限り別シートではなさそうなのですが、
 セルアドレスA1が何度もでてて、シート構成の意味がよく分かりません。

 (1or8)

 1or8 様

 説明下手で申し訳ありません。
 H と G も別シートです
 すみませんでした

 少しお尋ねしますが、各表の配置等の変更や
 作業列の使用等は可能なのですかね?

 それと
 >A〜Fまで以上のような表があります。
 >中の数字は変わり同一ではありません
 項目が同じなら、INDEX 書式 2 (セル範囲)
 の方が使えそうに思いますが。

 (HANA)

 A3 を変更するする度にターゲットとなるシートが変わるのであれば、
 どこかにA〜Fまでに対応するシート名一覧を作成し、index, match, indirect を組み合わせればよいかな?
 例えばこんな感じに、
   B列    C列
 1  A  シート名1
 2  B  シート名2
 3  C  シート名3
 〜省略〜
 6  F  シート名6

 =index(indirect(vlookup(a3,b1:c6,2)&"!c3:e5"),match(a2,indirect(vlookup(a3,b1:c6,2)&"!b3:b5"),0),match(a1,indirect(vlookup(a1,c1:c6,2)&"!b2:e2"))

 手打ちなので間違いがあるかもしれませんが・・・ 

 (1or8) @さっそく修正

 HANA 様
 1or8 様

 ご回答有難うございます。
 午後より外に出なくては行けなくなりました。
 勝手申しましてすみません。
 お返事遅くなります事深くお詫び申し上げます。
 必ず結果はご報告させて戴きます。

(いづみっち)


 =if(A3="","",INDEX(INDIRECT(vlookuo(A3,A5:B11,0),0),MATCH(A2,{5,8,10,13,15,20},1),if(OR(A3={"H","G"},2,MATCH(A1,{100,150,200},0))))

φはユーザー定義で "φ"## 入力は数字のみ

 vlookuo(A3,A5:B11,0)    A5:B11 は名前定義された範囲 の名前検索 (Cが名前として定義出来ない為)
jet

 HANA 様
 1or8 様
 jet 様
 有難うございました。
 結果が大変遅くなって申し訳ありません。

 VLOOKUP MATCH INDIRECT関数ですっきりしました。

 夫々の表A〜Hまでにシート名A〜Hをつけ
 夫々の表の範囲($B$3:$E$5)に表A〜表F
 夫々の行の範囲(B$2:$E$2)に表A行〜表F行と名前定義しました。 

 =IF(A3=G!A1,IF(A2>=20,G!B3,G!B2),IF(A3=H!A1,IF(A2>=13,H!B3,H!B2),
VLOOKUP(A2,INDIRECT"表"&A3,0),MATCH(A1,INDIRECT("表"&A3&"行"),0),0)))

 本当に助かりました。(いづみっち)
 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.