[[20080606111403]] 『反映の仕方って・・・』(真寿ちゃん) ページの最後に飛ぶ

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

 

『反映の仕方って・・・』(真寿ちゃん)
  
質問・・・
Sheet1のA1:真寿ちゃん(名前)
    B1:バナナ
    C1:H20/3/1〜H20/5/30
と入力した時、
Sheet2のA1に真寿ちゃんと入力しただけで、B1とC1に同じ内容を反映させる方法ってあるのでしょうか?
 
「エクセルのバージョン:excel2003&excel2007」
「OSのバージョン:windowsXP」

 Sheet1の1行目に対応するそれぞれの値を
 Sheet2でも表示したい
 ・・・と言う事でしょうか?

 HLOOKUP関数が使用出来そうに思います。

 (HANA)

 同じ様に表示はさせたいのですが、Aの欄には名前が複数人(30〜50人位)いるので、
sheet2のA欄に名前を入力した場合、BとCはその人にあった条件(sheet1で入力済み)を反映させる形にしたいのですが・・・

     A      B       C

 1  真寿ちゃん  バナナ  H20/3/1〜H20/5/30
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25
 3  おさるさん  みかん  H19/8/1〜H20/1/1
 4  ゴリラさん  キウィ  H20/2/1〜H20/4/30
 上記がsheet1に入力した場合、
 下記のsheet2に
     A      B    C
 1  おさるさん  みかん  H19/8/1〜H20/1/1
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25
 3
 4
 とA1に名前を入力しただけでBとCにその人の条件にあったのを表示させるという形なのですが・・・できますでしょうか?


 失礼しました。
 列方向の見出し(データは行方向へ並ぶ)だったのですね。

 でしたら、VLOOKUP関数です。
 こちらをご参考に、一度作ってみられては?
http://www.excel.studio-kazu.jp/lib/e1tw/e1tw.html

 上手く行かない場合は、その式と一緒に
 どの様になるのか説明を書いてみるのが良いと思います。

 (HANA)

 ありがとうございます。
 参考を見てみましたが、その中で式 =VLOOKUP(B3, B6:C10, 2, FALSE)  の意味で、B3 は調べたい品名、
B6:C10 は調べるテーブルの範囲、2 は表の2 列目のカロリーを求めるためと記載されていましたが、
例えば表が5つある時に表の2列目と4列目を求める時の式はどうすればできるのでしょうか?


 表が5つ有る?
 表の列が5つ有る?

 後者で有れば
=VLOOKUP(B3, B6:C10, 2, FALSE)
                    ~~ここを「5」
 にすると、5列目の値が返りますが・・・。
 一つのセルに一つのセルの値 に成れば良いのですよね?

 上にご提示の表ですと、Sheet2のB1には
=VLOOKUP($A1,Sheet1!$A$1:$C$4,2,FALSE)
 Sheet2のC1には              ~~~2番目(B列)
=VLOOKUP($A1,Sheet1!$A$1:$C$4,3,FALSE)
                             ~~~3番目(C列)
 と言った式になると思いますが・・・・
 表が5つですか?

 もう一度どういった状況なのか詳しく教えて下さい。

 (HANA)

2列目の値と4列目の値を返したいのですが・・・
 例えば、sheet2のB1に2番目と4番目を返したいのです。
 簡単に言うと2番目に返す値が無く、4番目に返す値があった場合に4番目の値からB1に返したいと思っているのですが・・・

 2番目にも4番目にも有った場合にどうするか?  とか、
 2番目や4番目のデータが何か(文字?数値?日付?)
 とかによって、式が変わると思いますが
 それらの列にはどの様な値が入っていますか?
 また、双方に入っている場合が有りますか?

 (HANA)

下記の内容になるのですが・・・
      A      B       C      D   E      F      G 
 1  真寿ちゃん  バナナ  H20/3/1〜H20/5/30    らいおん   にく    H20/9/1〜H20/9/30
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25    こあら   ささのは  H16/2/20〜H17/3/25
 3  おさるさん  みかん  H19/8/1〜H20/1/1     らっこ   ほたて   H19/10/1〜H19/10/31
 4  ゴリラさん  キウィ  H20/2/1〜H20/4/30    らくだ    おみず   H19/12/31〜H20/3/31
 上記がsheet1に入力した場合、
 下記のsheet2に
     A      B    C
 1  おさるさん  みかん  H19/8/1〜H20/1/1
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25
 3  らっこ    ほたて  H19/10/1〜H19/10/31
 4  こあら    ささのは H16/2/20〜H17/3/25
 と表示させたいものですが・・・

 表が二つに分かれているのですね・・・・。
 VLOOKUP関数を使うなら
 1.A:Cを検索し表示、無い場合は「""」を返す式は
      IF(COUNTIF(Sheet1!$A:$A,$A1),VLOOKUP($A1,Sheet1!$A:$C,COLUMN(B1),0),"")
      です。

  2.上の式の参照先を変更し
    E:Gを検索し表示、無い場合は「""」を返す式は
      IF(COUNTIF(Sheet1!$E:$E,$A1),VLOOKUP($A1,Sheet1!$E:$G,COLUMN(B1),0),"")
      です。            ~~~~~                         ~~~~~
 どちらかに有る方を表示させたいなら二つを&で結んで下さい。
= 1の式 & 2の式
 これを、& で5の式までつなげれば、ご希望の結果には成ると思います。

 本当は、表を一つにまとめられるのが一番良いのだと思いますが・・・・。

 もう一つ、INDEX関数を使うと範囲が複数設定出来ますので
=VLOOKUP($A1,INDEX((Sheet1!$A:$C,Sheet1!$E:$G),,,
SUM(COUNTIF(Sheet1!$A:$A,$A1)*1,COUNTIF(Sheet1!$E:$E,$A1)*2)),COLUMN(B1),0)
 ↑2行で一つの式です。
 この様にも出来ると思います。

 表を増やす場合は、INDEX関数の最初の(Sheet1!$A:$C,Sheet1!$E:$G)の部分に
 あと3つ「,」で区切りながら指定するのと、SUM関数の部分の
 SUM(COUNTIF(Sheet1!$A:$A,$A1)*1,COUNTIF(Sheet1!$E:$E,$A1)*2) の部分に
 やはり「,」で区切りながら COUNTIF(Sheet1! 名前の有る列 ,$A1) * 何番目の表か?)
 の様に増やして下さい。

 (HANA)


      A      B       C      D   E      F      G 
 1  真寿ちゃん  バナナ  H20/3/1〜H20/5/30    らいおん   にく    H20/9/1〜H20/9/30
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25    こあら   ささのは  H16/2/20〜H17/3/25
 3  おさるさん  みかん  H19/8/1〜H20/1/1     らっこ   ほたて   H19/10/1〜H19/10/31
 4  ゴリラさん  キウィ  H20/2/1〜H20/4/30    らくだ    おみず   H19/12/31〜H20/3/31
 上記がsheet1に入力した場合、
 下記のsheet2に
     A      B    C
 1  おさるさん  みかん  H19/8/1〜H20/1/1
 2  パンダさん  リンゴ  H18/3/10〜H19/6/25
 3  らっこ    ほたて  H19/10/1〜H19/10/31
 4  こあら    ささのは H16/2/20〜H17/3/25
 と表示させたいものですが・・・(前回の分をそのままです)
 ◎sheet1でABCは1つ目の表でEFGは2つめの表になります。それをsheet2にAの欄に名前を入力しただけで、その人にあった条件(Bの欄に食べ物、Cの欄に期間)が表示される場合もこの式で成立するのでしょうか?それとも違う式になるのでしょうか?

 少し疑問がありますb
 
 >それをsheet2にAの欄に名前を入力しただけで、その人にあった条件(Bの欄に食べ物、Cの欄に期間)が表示される場合もこの式で成立するのでしょうか?
 HANAさんの数式は試されました?
 >それとも違う式になるのでしょうか?
 試した結果が求めたものと違ったのでしょうか?
 
 それともう一つb
 なぜ、Sheet1の表は、A〜CとE〜Gの二つの場所で管理するのでしょう?
 名前(動物)は、A列
 名前(食物)は、B列
 期間    は、C列
 にしたほうが管理しやすいし、HANAさんの仰るとおり簡単だと思いますが・・・
 
 (キリキ)(〃⌒o⌒)b

一応、なんとかなりました。下の式でなりました。A3に名前を入れたらB3の欄に見事表示されました。
 =VLOOKUP($A3,INDEX(('20070613版'!$B:$C,'20070613版'!$H:$I,'20070613版'!$N:$O),,,SUM(COUNTIF('20070613版'!$B:$B,$A3)*1,COUNTIF('20070613版'!$H:$H,$A3)*2,COUNTIF('20070613版'!$N:$N,$A3)*3)),COLUMN(B3),0)
 しかし、またまた質問なのですがこの式をE3に貼り付けると下の式の様になったのですが、
 =VLOOKUP($D3,INDEX(('20070613版'!$B:$C,'20070613版'!$H:$I,'20070613版'!$N:$O),,,SUM(COUNTIF('20070613版'!$B:$B,$D3)*1,COUNTIF('20070613版'!$H:$H,$D3)*2,COUNTIF('20070613版'!$N:$N,$D3)*3)),COLUMN(E3),0)
 D3に名前を入れるとE3に表示されるはずのものが表示せず#REF!と表示され、問題解決しません。
 どうやったら表示される様になるでしょうか?

 何とかなりましたか、良かったです。
 でも、実際になさりたいことを書くのが良いと思います。

 当初は、名前で検索をしてそれに続く2列を表示させる
 と言ったご希望でしたので、VLOOKUP関数の列番号に
 COLUMN関数を使用しましたが、そうでないなら
 希望する列番号を入れておくのが良いと思います。

 VLOOKUP関数の列番号 とは、B3の式の場合
 【COLUMN(B3)】の部分です。

 このVLOOKUP関数はネストがたくさんで長くなっていますが
VLOOKUP(検索値,範囲,列番号,検索の型)
 とそれぞれ出して考えると

 検索値  $A3
 範囲   INDEX(・・・・$A3)*3)) ←ここが長い
 列番号  COLUMN(B3)
 検索の型 0

 (これは、数式バーの左側にある[ Fx ]を押すと
  数式パレットが表示されて確認しやすいと思います。)

 COLUMN(B3)は「2」を返しますので、B列の式では
 範囲の2列目を表示しますが
 これをE列にコピペした事で、この部分が
 COLUMN(E3)に成っており、これは「5」を返します。
 範囲の5列目は有りませんので、#REF!が表示されます。

 再度書いておきます。
 この式をコピーしたときに 該当のデータを順番に表示させたい
 と言うご希望が特に無いので有れば、B3セル用の式の
 COLUMN(B3)の部分を「2」に変更した後
 E列にコピペして下さい。

 或いは、E列にコピペした後、COLUMN関数の参照先を
 B列に変更して下さい。

 (HANA)

わかりました。
 すごく勉強になりました。
 エクセルから離れてた時期が長く、思い出すにも思い出せなくて(笑)
 最後にまた質問なのですが、名前を入れない状態だと#VALUEが表示されるのですが、これは隠せないのですか?上記のURLの中に#N/Aの隠し方と一緒なのですか?


 各表の先頭列に有る値
(検索される可能性の有る値)が
 その他の部分に存在しないので有れば
 全ての表が含まれる範囲を選択し
 その中で検索値を捜して条件にするのが良いと思います。
 例えば
  COUNTIF('20070613版'!$B:$N,$D3)
 の様に。

 検索される可能性の有る値が、その他の部分にも存在する可能性が有るのなら
 各先頭列で、検索値の個数を求めそれを足し算した物
COUNTIF('20070613版'!$B:$B,$D3) + COUNTIF('20070613版'!$H:$H,$D3) + COUNTIF('20070613版'!$N:$N,$D3)
 を条件にしても良いかもしれません。

 もちろん、上記URLの中に書いてある方法と同じように
IF(ISERROR(現在の式),"",現在の式)
 とやっても良いですが、式が更に長く成って仕舞いますので・・・。

 もしも、最初に書いたチェックが出来ないので有れば
 2番目に書いた物でも、やはり式が長くなってしまいますので
 条件付き書式で、エラー値を「見えなくする」と言う方法を採るのが
 良いかもしれません。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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