[[20080214103141]] 『IF VLOOKUP 関数について』(みみ) ページの最後に飛ぶ

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

 

『IF VLOOKUP 関数について』(みみ)

いつもお世話になります。

条件に応じて表示をさせたいのですが、うまく出来ません。

Sheet2(IF関数で住所録とリンク)

  A・・・  F         G        H           I         J       K
 1 CODE・・ 搬入先1  搬入先2                 担当者
 2 1・・・   6          7         8            9             10     11
 3 001A  椛蜑^   関西支店 椛蜑^御中     関西支店御中  田中  田中様
 4 002B    ○○梶@       ○○褐苒            林   林様
 5 022C    立花運輸梶@中京倉庫 立花運輸褐苒 中京倉庫御中
 6 023D    南港倉庫梶@     南港倉庫御中

 データーの入力は主に上記4パタンです。
 倉庫コード(A1:P100)名前の定義

 Sheet1
 B1 に客先コードを入力する。
 A5=IF($B$1="","",IF(VLOOKUP($B$1,倉庫コード,7,FALSE)="","",
       VLOOKUP($B$1,倉庫コード,6,FALSE)))

 A7=IF($B$1="","",VLOOKUP($B$1,倉庫コード,10,FALSE))

 A6に下記のように表示したいです。

 コード 001A    002B    002C      023D 
 A5=  椛蜑^         立花運輸梶@
 A6=  関西支店  ○○梶@  中京倉庫御中  南港倉庫御中
 A7=  田中    林     
             
 問題点)コード002Bのパタンが入力した時に
    A7に担当者の名前は表示されますが、
    A6に会社名が表示されません。
 式がだんだん長くなって分けわからなくなりました(TT)

 B6=IF($B$1="","",IF(AND(A7="",VLOOKUP($B$1,倉庫コード,7,FALSE)=""),
 VLOOKUP($B$1,倉庫コード,8,FALSE),IF(AND(A7="",VLOOKUP($B$1,倉庫コード,7,
 FALSE)>0),VLOOKUP($B$1,倉庫コード,9,FALSE),IF(AND(A7>0,VLOOKUP
 ($B$1,倉庫コード,7,FALSE)>0),VLOOKUP($B$1,倉庫コード,7,FALSE),
 IF(AND(A7>1,VLOOKUP($B$1,倉庫コード,7,FALSE)=0),
 VLOOKUP($B$1,倉庫コード,6,FALSE),""))))) 

 よろしくお願いします。


 本当にこの仕様でよいのか、眉つばの気もしているのですが(失礼)、、、

 (1) A5セル =IF($B$1="","",IF(VLOOKUP($B$1,倉庫コード,7,FALSE)="","",VLOOKUP($B$1,倉庫コード,6,FALSE)))
 (2) A6セル =IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")
       +2*(COUNTA(INDEX(Sheet1!$J$1:$K$100,MATCH($B$1,Sheet1!$A$1:$A$100,0),0))=0),FALSE))
 (3) A7セル =IF($B$1="","",VLOOKUP($B$1,倉庫コード,10,FALSE)&"")

 結果図
     <ケース1>      <ケース2>       <ケース3>
 行   ___A____  _B__     行   __A___  _B__     行   _____A______  _B__  
  1             001A        1           002B        1                 022C  
  2                         2                       2                       
  3                         3                       3                       
  4                         4                       4                       
  5   椛蜑^                5                       5   立花運輸          
  6   関西支店              6   ○○              6   中京倉庫御中        
  7   田中                  7   林                  7                       

 (半平太)

 あれ! 3パターンから4パターンに増えましたね? でも結果オーライ見たい。

 行   _____A______  _B__  
  1                 023D  
  2                       
  3                       
  4                       
  5                       
  6   南港倉庫御中        
  7                       

半平太 様

ありがとうございます。

 4パタンです。すみません。ページを更新してからすぐ気づいたのですが、、、
 住所などの情報はSheet2ありますので、Sheet1のところをSheet2に変えてみたら
 下記の結果がでました(泣)

Sheet1

   <ケース1>      <ケース2>       <ケース3>

 行   ___A____  _B__     行   __A___  _B__     行   _____A______  _B__  
  1             001A        1           002B        1                 022C  
  2                         2                       2                       
  3                         3                       3                       
  4                         4                       4                       
  5   椛蜑^                5                       5   立花運輸          
  6   関西支店              6   ○○              6   中京倉庫       
  7   田中                  7   林                  7  

 <ケース4>
 行   _____A______  _B__  
  1                 023D  
  2                       
  3                       
  4                       
  5                       
  6   南港倉庫        
  7       

 A6=IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")
 +2*(COUNTA(INDEX(Sheet2!$J$1:$K$100,MATCH($B$1,Sheet2!$A$1:$A$100,0),0))
 =0),FALSE))

 パタンの1〜4まで、すべて同じ表示がされます。
 式を上下に並べて見てもさっぱり分かりません。
 よろしくお願いいたします。
 (みみ)      

 >Sheet1のところをSheet2に変えてみたら下記の結果がでました(泣) 
 ありゃ! 逆でしたか すみません。

 1.データ確認
 以下でいいですか?

 (1)名前定義: 倉庫コード =Sheet2!$A$1:$P$100

 (2)サンプルデータ <Sheet2>

 行  _A__ _B_ _C_ _D_  E  ___ F ____ ___G____ ______H_______ _____I______ __J___ __K___ 
  1  CODE                 搬入先1    搬入先2                              担当者        
  2     1   2   3   4   5          6        7              8            9     10     11 
  3  001A                 椛蜑^     関西支店 椛蜑^御中     関西支店御中 田中   田中様 
  4  002B                 ○○              ○○褐苒                  林     林様   
  5  022C                 立花運輸 中京倉庫 立花運輸褐苒 中京倉庫御中               
  6  023D                 南港倉庫          南港倉庫御中                              

 2.式再掲(前回と同じものです。ただし、Sheet1→Sheet2へ変更)

 (1) A5セル =IF($B$1="","",IF(VLOOKUP($B$1,倉庫コード,7,FALSE)="","",VLOOKUP($B$1,倉庫コード,6,FALSE)))
 (2) A6セル =IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")
       +2*(COUNTA(INDEX(Sheet2!$J$1:$K$100,MATCH($B$1,Sheet2!$A$1:$A$100,0),0))=0),FALSE))
 (3) A7セル =IF($B$1="","",VLOOKUP($B$1,倉庫コード,10,FALSE)&"")

 3.結果
  Sheet1はこんな風になりますが、、

 行  ___A____ _B__   行  __A___ _B__   行  _____A______ _B__   行  _____A______ _B__ 
  1           001A     1         002B     1               022C     1               023D 
  2                    2                  2                        2                    
  3                    3                  3                        3                    
  4                    4                  4                        4                    
  5  椛蜑^            5                  5  立花運輸            5                    
  6  関西支店          6  ○○          6  中京倉庫御中          6  南港倉庫御中      
  7  田中              7  林              7                        7                    


 A6の式を変更します。

 A6セル =IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")+2*(A7=""),FALSE))

 (半平太)


半平太 様

 おはようございます。
 ばっちりです。ありがとうございます。
 COUNTA、INDEX、MATCHの関数の組み合せ方がよく分かってないので
 変更後の式の方が分かりやすかったです。
 もう一つ教えてもらってもよろしいでしょうか?
 A6=IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")+2*(A7=""),FALSE))

 上の式の中で 2*(A7="") の前の 2* の意味が
 よくわからないのですが、、どういった場合によく使いますか?
 よろしくお願いします。

 >COUNTA、INDEX、MATCHの関数の組み合せ方がよく分かってないので変更後の式の方が分かりやすかったです。

 1. 当初はSheet2の担当者(J,K列)にデータがあるかどうかでパターン判定をしようと思ったので式が複雑になってしまいました。
   しかし、Sheet1のA7が空白かどうかを見れば良いことに気がつきましたので、変更した次第です。(これで単純化できました)

 >2*(A7="") の前の 2* の意味がよくわからない

 2.式全体から判断する必要があります。

 =IF($B$1="","",VLOOKUP($B$1,倉庫コード,6+(VLOOKUP($B$1,倉庫コード,7,FALSE)<>"")+2*(A7=""),FALSE))
                    ↑ ~~~~~~~~~~~~~~~~~~~~~~↑~~~~~~~~~~ ~~~~↑~~~
                   あ               い                う

 あ.何の条件もなければ、6列目をみます。

 い.7列目(搬入先2)にデータがあれば、カッコの中は「True(つまり1)」になりますので、全体として「6+1」列目を見ることになります。
   しかし、そこにデータがなければ「False(つまり0)」になりますので、全体としては引き続き6列目を見ることになります。

 う. A1(担当者)が空白ならカッコの中は「True(1)」なります。それを2倍しますから、2列ずれることになります。
   A1にデータが入っていれば、「False(0)」になりますから、何の変更も加えられません。「2*0」は0ですから。

 パターン1の場合、7列目あり、担当者あり なので 6+1+2*0 で7列目をみます。 「関西支店」が出ます。
 パターン2の場合、7列目なし、担当者あり なので 6+0+2*0  で6列目をみます。 「○○株」が出ます。
 パターン3の場合、7列目あり、担当者なし なので 6+1+2*1  で9列目をみます。 「中京倉庫御中」が出ます。
 パターン4の場合、7列目なし、担当者なし なので 6+0+2*1  で8列目をみます。 「南港倉庫御中」が出ます。

 >どういった場合によく使いますか?

 3. 真偽判定の結果、いくつか足す時によく使います。
  たとえば、一般350円、会員150円。(ただし男は一律50円増し)、という場合

   普通は =if(A1="会員",150,350)+if(B1="男",50,0)というような式にしますが、
   これを =350-200*(A1="会員")+50*(B1="男")     な風にifを多用しないで済ませすことができます。

 (半平太)

コメント返信:

[ 一覧(最新更新順) ]


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