[[20110227230333]] 『駐車券発行』(K) ページの最後に飛ぶ

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

 

『駐車券発行』(K)

 駐車券の発行をしたいのですが複数の条件があります。

 P3にリスト番号
 A5に駐車場所名
 E9にお客様名  

 B28に駐車場所名1
 B29:B52にお客様リスト番号
 C29:C52にお客様リスト名

 G28に駐車場所名2
 G29:G52にお客様リスト番号
 H29:H52にお客様リスト名

 があります。それで、P3に駐車場所1にあるお客様リスト番号(B29:B52の中)を入れると
 A5にB28の駐車場所名1が入り、E9にC29:C52にあるお客様リスト名が入るようにしたいのですがどのようにすれば良いですか。説明が下手ですが宜しくお願いします。


 現在リストが B28からとG28から の二つありますが
 お客様リスト番号が先頭列に成る様に一つの表にまとめると
 簡単にVLOOKUP関数が使える様に成るのではないかと思います。

 元のリストの形を変えられないなら
 別の場所に = でリンクさせるだけでも良いと思います。

 VLOOKUP関数に関してはこちらをご参考に。
http://www.excel.studio-kazu.jp/lib/e1tw/e1tw.html

 (HANA)

 (HANA)様

 VLOOKUPのやり方は分かるのですが、リストを二つにてやることは出来ないですか。
 二つを参照することは無理ですか?
 別の場所に = でリンクさせるとはどう言うことですか?
 (K)


 >二つを参照することは無理ですか?
 やりようはいくらでもあるのですが。。。

 A5は
 =IF(P3がB29:B52の中にあれば,B28,IF(P3がG29:G52の中にあれば,G28,""))

 >VLOOKUPのやり方は分かるのですが
 と言う事なので、E9の方の式も IF関数と組み合わせて
 二つのVLOOKUP関数を切り替えて使用出来る様にすれば良いと思います。

 「P3がB29:B52の中にあれば」の判定は
 COUNTIF関数が良くつかわれている様に感じます。

 COUNTIF(B29:B52,P3)が0より大(戻り値が1以上)の場合に
 「P3がB29:B52の中にある」と言う事に成ります。

 なので
 =IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 と言った感じになるでしょうか。

 E9の式は B28,G28 の部分を VLOOKUP関数に変更して下さい。

 リストが2つくらいなら、この様にIFで分岐しても良いかもしれません。
 リストが多いと関数が混み合ってきますので
 =B29   =C29   =$B$28 の様に
 それぞれのセルを参照した、一つの表を作っておいた方が
 簡単にできると思います。

 数式を入れなくても、コピー→形式を選択して貼り付け→[リンク貼り付け]
 をやってもらっても良いかもしれません。
  1つ目の表をリンク貼り付けして隣の列に B28 もリンク貼り付け
   その下に2つ目の表をリンク貼り付けして G28 もリンク貼り付け

 (HANA)


  (HANA)様

 E9には=IF(COUNTIF($B$29:$F$52,P3),VLOOKUP(P3,$B$29:$F$52,2,FALSE)&"","")を
 いれて置いたのですが。

 A5は =IF(P3がB29:B52の中にあれば,B28,IF(P3がG29:G52の中にあれば,G28,""))

 E9は =IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 どのように変えればよいかわかりません。  

 数式を入れなくても、コピー→形式を選択して貼り付け→[リンク貼り付け]
 をやってもらっても良いかもしれません。
  1つ目の表をリンク貼り付けして隣の列に B28 もリンク貼り付け
   その下に2つ目の表をリンク貼り付けして G28 もリンク貼り付け
 これは、どう言うことですか?

 すいません宜しくお願いします。
(K)


 (HANA)様
 分かりました。
 有り難うございました。(K)

 両方出来たって事かな。。。?

 IFで切り換える場合 E9はA5の式の
 >=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
                           ~~~1                      ~~~2
 1の所が、B29:C52の中から、P3を探して2列目を返す
 2の所が、G29:H52の中から、P3を探して2列目を返す
 VLOOKUP関数になります。

 =IF(COUNTIF(・・・),VLOOKUP(・・・),IF(COUNTIF(・・・),VLOOKUP(・・・),""))
                     ~~~~~~~~~~~~~~~1                  ~~~~~~~~~~~~~~~2
 と言った感じで。

 (HANA)


 (HANA)様
 お世話になりました。

 >数式を入れなくても、コピー→形式を選択して貼り付け→[リンク貼り付け]
 をやってもらっても良いかもしれません。
  1つ目の表をリンク貼り付けして隣の列に B28 もリンク貼り付け
   その下に2つ目の表をリンク貼り付けして G28 もリンク貼り付け
 これは、どう言うことですか?もし、リストが増えた場合は、式を増やすより簡単なのですか?
 (K)


 「リンク貼り付け」と言うのをやってごらんになった事がありますか?
 未体験でしたら、まずは小さな例でやってみてください。

 A1:B2セルをコピーして
 C1セルを選択して右クリック
  →形式を選択して貼り付け
 を選ぶと、開いた窓の下の方に[リンク貼り付け(S)]というのがありますので
 それをクリック

 すると、C1セルに =A1 D1セルに =B1
         C2セルに =A2 D2セルに =B2
 と言う式が入ります。
 A1:B2の範囲に入力をすると、C1:D2の対応するセルの値も同じものに変わります。
 (ただし、何も入力が無い場合 C1:D2 セルには「0」が表示されています。)

 結局やっている事は「C1セルに =A1 の式を入れて必要範囲にフィルドラッグ」
 と変わりません。

 >もし、リストが増えた場合は、式を増やすより簡単なのですか?
 E9セルの実際の式を作ってみましたか?
 リストが2箇所にあるというだけでずいぶん長い式に成っていると思います。

 リストが増えた場合、さらにそれが長くなります。
 =IF(COUNTIF(・・・),VLOOKUP(・・・),IF(COUNTIF(・・・),VLOOKUP(・・・),IF(COUNTIF(・・・),VLOOKUP(・・・),IF(COUNTIF(・・・),VLOOKUP(・・・),IF(COUNTIF(・・・),VLOOKUP(・・・),"")))))
 こんな事になると、どういった式なのか 分かりにくくなります。
 もしも範囲の変更があった場合にも、何処を変更すれば良いのか
 判断するのも難しくなると思います。
  エクセルのバージョンによっては、関数のネスト回数も限られています。

 諸悪の根源は、リストが複数ある事です。
 これを無理やりにでも
   リスト番号 お客様名 駐車場所名
 と言う一つの表にしておけば 単純にVLOOKUP関数が使える様になります。
 エラー処理を入れても
 =IF(COUNTIF(・・・),VLOOKUP(・・・),"")
 と言う短い式に出来ます。
 A5,E9の片方の式を作れば、VLOOKUP関数の列番号だけを変更するだけで
 もう片方の式も出来ます。

 無理やりにでも一つにする方法として
 ◆変更があるたびに もうひとつの表も同じ様に変更
 しても良いですが、同じものを二回は入力したく無いですよね?
  忘れちゃうこともあるでしょうし。

 ですから「=セル番地」の形でリンクさせてくのはどうかと思い
 提案させていただいています。

 一つの駐車場所毎の最大入力件数が24件と決まっている様なので
 24行ずつ下にずらして参照させておけば良さそうに思います。

 これなら、リスト(駐車場所名)が増えた場合も
 現在のリンク参照させている範囲の続きにリンク参照させ
 数式の範囲を拡張すれば良いですね。

 ・・・で、不図思ったのですが
 リスト番号 は、他の駐車場所を合わせてみても
 重複しませんよね。。。?

 (HANA)   


  (HANA)様
 有り難うございます。
 リストを一つにするとリスト番号全てに駐車場所名を入れなくてはいけないことと、表に
 したときに同じことが全てに入ること(駐車場所名)が原因です。
 (K)


 えっと。。。うまく伝わっていますかね。。。

 そもそも、現在作っているリストは変更出来るのでしょうか?
 出来ないのでしょうか?

 ●変更出来る場合

 >リスト番号全てに駐車場所名を入れなくてはいけないことと
 最初に一つ入れて 続くセルは「=」で参照させれば
 人が一つずつ入れる必要はありません。

 >表にしたときに同じことが全てに入ること
 人が見た時の話であれば、文字色を背景色と同じにしておけば良いです。

 ただし、一つの駐車場毎に24行ずつ確保するなら たとえば
 駐車場所名1 の人数が4人だった場合、20行分空いてから
 駐車場所名2 のリストが始まる事に成りますね。

 ●変更出来ない場合

 この場合を想定して「全く別の所にもう一つリストを作る」事を提案しています。
 小さなサンプルを載せてみます。
	[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]
[1]	リストNO		←ここに	入力する			リストNO	顧客名	場所名
[2]	場所名		←数式				1111	藤沼一成	AAA
[3]	顧客名		←数式				2222	倉本庄司	AAA
[4]							3333	根岸文江	AAA
[5]	AAA			BBB			0	0	AAA
[6]	リストNO	顧客名		リストNO	顧客名		0	0	AAA
[7]	1111	藤沼一成		666	大石源造		666	大石源造	BBB
[8]	2222	倉本庄司		777	野沢朋子		777	野沢朋子	BBB
[9]	3333	根岸文江					0	0	BBB
[10]							0	0	BBB
[11]							0	0	BBB
[12]							↑G:I列を作業スペースにして		
							 G3:H6 に A7:B11 をリンク貼り付け		
							  I3:I6 に B5 をリンク貼り付け		
							 G7:H11 に D7:E11 をリンク貼り付け		
							  I7:I11 に D5 をリンク貼り付け		
 ぞれぞれのリストは最大5件ずつを想定									

 B2,B3の数式では、G:Iの範囲を使用する。
 B2=IF(AND($B$1<>"",COUNTIF($G$2:$G$11,$B$1)),VLOOKUP($B$1,$G$2:$I$11,3,FALSE),"")
 B3=IF(B2<>"",VLOOKUP($B$1,$G$2:$I$11,2,FALSE),"")

 G:I列を用意しない場合
 B2=IF(COUNTIF($A$7:$A$11,$B$1),$A$5,IF(COUNTIF($D$7:$D$11,$B$1),$D$5,""))
 B3=IF(COUNTIF($A$7:$A$11,$B$1),VLOOKUP($B$1,$A$7:$B$11,2,FALSE),IF(COUNTIF($D$7:$D$11,$B$1),VLOOKUP($B$1,$D$7:$E$11,2,FALSE),""))

 済みません、G:I列を用意した場合のB2セルの数式は
 B1<>"" の判定も同時に必要でした。

 (HANA)

 (HANA)様
 お世話になります。
 両方のサンプル作ってみました。

 >G:I列を用意した場合のB2セルの数式は
 B1<>"" の判定も同時に必要でした。
 何処に入れればよいのですか?(K)


 参考までに

 A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 E9=IF(A5="","",VLOOKUP(P3,IF(A5=B28,B29:C52,G29:H52),2,0))

 駐車場所名がたくさんある場合の参考として
 =E9=IF(A5="","",VLOOKUP(P3,CHOOSE(MATCH(E9,{"駐車場所名1","駐車場所名2"},0),F10:G19,H10:I19),2,0))

 リスト範囲に名前をつけて
 例
 >B28に駐車場所名1
 >B29:B52にお客様リスト番号
 >C29:C52にお客様リスト名
 範囲 B29:C52 に 「駐車場所名1」と名前定義
 同様に 範囲 G29:H52 に 「駐車場所名2」と名前定義

 A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 E9=IF(A5="","",VLOOKUP(P3,INDIRECT(A5),2,0))

 By

 >何処に入れればよいのですか?
 これは既に入れた式を載せています。

 >>B2=IF(AND($B$1<>"",COUNTIF($G$2:$G$11,$B$1)),VLOOKUP($B$1,$G$2:$I$11,3,FALSE),"")
     この部分/~~~~~~~~で B1<>"" の判定をして
 AND関数に入れています。

 AND($B$1<>"",COUNTIF($G$2:$G$11,$B$1)) で
     B1<>""     と COUNTIF(・・・) 両方がTRUEの時に TRUE に成ります。
 B1に入力が有って  範囲の中に同じリスト番号が有る時

 (HANA)

 (HANA)様
 有り難うございました。(K)


 By様
 やってみましたが出来ません。(K)


 >やってみましたが出来ません。(K)
 これだけでは 次の回答が出せません

 どの式を使用して、どのようになったのでしょう?
 (やった結果を記載ください・・何らかの答えにが出るはずです)
 ・エラーになる(どのようなエラーなのかも記載ください)
 ・○○という値が出たが、実際に希望する値ではない(期待する値は△△です)
 ・期待する値は△△ですが 空白になる
 等 具体的に記載ください

 また、(HANA)さんが回答しているように 表を提示ください

 By


 By様

 >A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 E9=IF(A5="","",VLOOKUP(P3,IF(A5=B28,B29:C52,G29:H52),2,0))
 これは、一つのお客様名と駐車場所名しか出ません。

 >駐車場所名がたくさんある場合の参考として
 =E9=IF(A5="","",VLOOKUP(P3,CHOOSE(MATCH(E9,{"駐車場所名1","駐車場所名2"},0),F10:G19,H10:I19),2,0))
 リスト範囲に名前をつけて
 例
 >B28に駐車場所名1
 >B29:B52にお客様リスト番号
 >C29:C52にお客様リスト名
 範囲 B29:C52 に 「駐車場所名1」と名前定義
 同様に 範囲 G29:H52 に 「駐車場所名2」と名前定義
 こちらは、駐車場場所名しか出ません。 これは、どこをさしてますか?F10:G19,H10:I19

 >A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 E9=IF(A5="","",VLOOKUP(P3,INDIRECT(A5),2,0))
 こちらは、駐車場場所名は出ますが、お客様名は#REF!になります。
 (K)

 >>A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 >>E9=IF(A5="","",VLOOKUP(P3,IF(A5=B28,B29:C52,G29:H52),2,0))
 >これは、一つのお客様名と駐車場所名しか出ません。

 最初の質問は
 >A5にB28の駐車場所名1が入り、E9にC29:C52にあるお客様リスト名が入るように
 >したいのですがどのようにすれば良いですか

 最初の質問を満たしていないということですか?
 私が質問内容を誤解しているかな?
 または、質問内容が変わったのかな?

 >これは、どこをさしてますか?F10:G19,H10:I19

 訂正します
 >駐車場所名がたくさんある場合の参考として
 >=E9=IF(A5="","",VLOOKUP(P3,CHOOSE(MATCH(E9,{"駐車場所名1","駐車場所名2"},0),F10:G19,H10:I19),2,0))
 を
 第2案
 A5=IF(COUNTIF(B29:B52,P3),B28,IF(COUNTIF(G29:G52,P3),G28,""))
 E9=IF(A5="","",VLOOKUP(P3,CHOOSE(MATCH(E9,{"駐車場所名1","駐車場所名2"},0),B29:C52,G29:H52),2,0))
 に訂正願います、範囲を誤記(こちらで検証している範囲の訂正漏れ)です

 "駐車場所名1","駐車場所名2" は実際の名前に変更してください

 第3案の
 リスト範囲に名前をつけて以下について

 >E9=IF(A5="","",VLOOKUP(P3,INDIRECT(A5),2,0))
 >こちらは、駐車場場所名は出ますが、お客様名は#REF!になります
 名前定義の名前と実際の駐車場場所名が一致していますか?

 By

コメント返信:

[ 一覧(最新更新順) ]


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