[[20040903053436]] 『空白を表示させるには?』(おろろ) ページの最後に飛ぶ

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

 

『空白を表示させるには?』(おろろ)

 指定したセルの範囲内で出現した文字の中で、その出現回数が最小値の文字を
 表示する数式について質問させて下さい。

 実際の表はこんな感じです。

        AL   AM   AN 
 -------------------------  
 6      C    C    B
 7      A    B    C
 8      B    E    C
 9      A    C    E
 10     A    E    C
 11     C    B    A
 12     E    D    A
 13     D    D    A
 14     D    C    E
 15     A    B    E
 --------------------------
 16     7    5    8
 17     4    6  

 まず、
 AL6からAN15までの範囲の中で、
 AL16に、「A」の出現回数の合計を数式で表示するようにしてあり、
 AM16に、「B」の出現回数の合計を数式で表示するようにしてあり、
 AN16に、「C」の出現回数の合計を数式で表示するようにしてあり、
 AL17に、「D」の出現回数の合計を数式で表示するようにしてあり、
 AM17に、「E」の出現回数の合計を数式で表示するようにしてあります。

 そして、
 AN17には、AL16,AM16,AN16,AL17,1M17の中で、
 最小の数値(すなわち、AL6からAM15の中での出現回数が最小のもの)を
 表示するための数式をいれてあります。
 この数式は、
 =IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E","")
 で、実際にこの数式をいれると、AN17には、
 上記の表の場合は、「D」と表示されます。
 (長い数式でごめんなさい・・・汗)

 自力でなんとかここまで作りましたが、
 前々回に質問した内容
 (=空白を表示するには?という感じの質問でした。)
 と重なるところがあるので、たずねにくいのですが、

 AL6からAM15までの範囲の中が、未記入の場合、
 既に入れてある数式(=A,B,C,D,Eの出現回数を表示する数式)により、
 AL16,AM16,AN16AL17,AM17には、
 「0」が表示されます。
 すると、これのセルは全ての数値が等しいので、
 AN17には「ABCDE」の全てが表示されます。
 このときのAN17のセルを「空白」にしたいのです。

 そのとき、自分で考えたのは、
 AL16,AM16,AN16AL17,AM17は全て「0」になってるわけだから、
 「0」になった場合は、「空白」とすればいいんだろうなぁ、と思い、

 IF(AL16=0,AM16=0,AN16=0,AL17=0,AM17=0,""

 を、上記した数式につけくわえればいいのかな?と思い、

 =IF(AL16=0,AM16=0,AN16=0,AL17=0,AM17=0,""),
 IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E","")
 としてみました。

 が、うまくいきません。
 考え方の流れが根本的に間違っているのか、
 それとも、
 優先される数式の順番があるのかな?
 と、今、頭が混乱しています。

 基本的な事柄も、あまり理解してないため、
 このような疑問に毎度毎度ぶつかって苦戦してます。 

 よろしければ、基礎的なことも含めて、教えていただければと思います。
 (複数条件の時の優先度等)

 P.S
 いつもかたわらに、S社発行のExcel関数大辞典を置き、
 それを見ながら、自分の入力したい数式に近い項目を引きつつ、
 作業をしているのですが、苦戦しまくりです(T.T)

 =IF(AND(AL16=0,AM16=0,AN16=0,AL17=0,AM17=0),"",
 IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E",""))
 とAND()を使用するか、=SUM()を使用して、下のようにされたらどうでしょう?

 =IF(SUM(AL16:AN16,AL17:AM17)=0,"",
 IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E",""))
 同様の意味で、=SUM()の代わりに=MAX()も使用できます。中でMIN()を使っていますので、
 =MAX()の方が、ごろがよいかもしれませんね。
               
 >(複数条件の時の優先度等)
 私は、エクセルは、本を読まずに習得しようと決心しまして、ヘルプとネットだけでやって
 います。実際に試行して帰納的に覚えていますので、理屈は、殆ど判りません。
 これは、数式の外側>内側の順になっていると思っています。
 ご提示の&で並列させる方法は、同一件数の存在を意識された適切な選択ですね。(LOOKUP)


 見事に出来ました!
 本当にありがとうございます。

 と、ここで、さらに疑問が・・・汗

 今,データを入力して、ご指導いただいた数式をいれたのですが、
 たまたま、同一件数がでました。
 この場合、「ABCDE」と表示されたのですが、
 そうするとセルがみづらくなってしまったので、
 0での同一は空白という条件を残したまま、
 A,B,C,D,Eが同一数値の場合、「同」と表示させるには
 どうしたらよいのでしょうか?

 数式の外側>内側であるならば、
 0のときは空白の指示のあとに、「同」と表示させる数式をいれたら
 よいのでしょうか?

 ためしに、

 =IF(AND(AT16=0,AU16=0,AV16=0,AT17=0,AU17=0),"",
 (AND(AT16=AU16=AV16=AT17=AU17),"同",IF(AT16=MIN(AT16,AU16,AV16,AT17,AU17),"A","")
 &IF(AU16=MIN(AT16,AU16,AV16,AT17,AU17),"B","")
 &IF(AV16=MIN(AT16,AU16,AV16,AT17,AU17),"C","")
 &IF(AT17=MIN(AT16,AU16,AV16,AT17,AU17),"D","")
 &IF(AU17=MIN(AT16,AU16,AV16,AT17,AU17),"E",""))

 としたところ、エラーになりました。

 まだ、ANDの使い方がわからってないので
 本を読み返してるところですが、
 根本的に間違った考え方をして覚えてしまいそうなので
 再度質問させていただきました。

 よろしくおねがいいたします。             (おろろ)


 =IF(AND(AL16=0,AM16=0,AN16=0,AL17=0,AM17=0),"",
 IF(AND(AL16=AM16,AM16=AN16,AN16=AL17,AL17=AM17,AM17=AL16),"同",
 IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E","")))
 や
 =IF(MAX(AL16:AN16,AL17:AM17)=0,"",
 IF(MAX(AL16:AN16,AL17:AM17)=MIN(AL16:AN16,AL17:AM17),"同",
 IF(AL16=MIN(AL16,AM16,AN16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AN16,AL17,AM17),"B","")
 &IF(AN16=MIN(AL16,AM16,AN16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AN16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AN16,AL17,AM17),"E","")))
 でしょう?                               (LOOKUP)

 このようにしておきますと、文字の間に,が入ります。
 =IF(MAX(AL16:AN16,AL17:AM17)=0,"",
 IF(MAX(AL16:AN16,AL17:AM17)=MIN(AL16:AN16,AL17:AM17),"同",
 SUBSTITUTE(
 IF(AL16=MIN(AL16:AN16,AL17:AM17),",A","")
 &IF(AM16=MIN(AL16:AN16,AL17:AM17),",B","")
 &IF(AN16=MIN(AL16:AN16,AL17:AM17),",C","")
 &IF(AL17=MIN(AL16:AN16,AL17:AM17),",D","")
 &IF(AM17=MIN(AL16:AN16,AL17:AM17),",E",""),
 ",",,1)))


 いつもありがとうございます!
 教えられた数式を元に自分なりに、納得できるまで試行錯誤を繰り返した結果、
 下記の式が自分の思い描いていたものに近かったです。

 =IF(AND(AL16=0,AM16=0,AV16=0,AL17=0,AM17=0),"",
 IF(AND(AL16=AM16,AL16=AV16,AL16=AL17,AL16=AM17,AM16=AV16,AM16=AL17,AM16=AM17,AV16=AL17,AV16=AM17,AL17=AM17),"同",
  IF(AL16=MIN(AL16,AM16,AV16,AL17,AM17),"A","")
 &IF(AM16=MIN(AL16,AM16,AV16,AL17,AM17),"B","")
 &IF(AV16=MIN(AL16,AM16,AV16,AL17,AM17),"C","")
 &IF(AL17=MIN(AL16,AM16,AV16,AL17,AM17),"D","")
 &IF(AM17=MIN(AL16,AM16,AV16,AL17,AM17),"E",""))

 文字の間に「,」をいれる方法も試みたのですが、
 「,」を入れる式にすると、
 単一でそのアルファベットが表示された場合も「,」がついてしまったので
 とりあえず今回は「ABD」と連続して表記されても問題ないので
 省略しました。

 最初はエクセルの基礎を学習するために
 いろんな数字を分けることを目的に式を考えて表を作っていましたが
 もっとがんばれば、商品の売上や長い間売れていないもの、も表せて
 とても便利だなぁということがいまさらながら、よくわかりました(汗)
 なので、今度はそういうものにも挑戦しようと思ってます!
 今,作ってる表の数字だけの羅列を、商品名に置き換えれば
 それが即、その商品の売れた結果、となりますもんね(^^)

 また、自分なりに考えてわからなかった場合、質問させていただくと思いますが
 よろしくお願いいたしますm(_ _)m


 ご自分でが納得行く数式ができてなによりです。

 >文字の間に「,」をいれる方法も試みたのですが、
 >「,」を入れる式にすると、
 >単一でそのアルファベットが表示された場合も「,」がついてしまったので
 これは、おろろさんの数式の入力違いによるものでしょう?
 当方で、再度、確認しましたが、なんの問題もなく期待値が戻ります。          (LOOKUP)


 今、いわれたとおり、いれてみてできなかった数式をチェックしました。
 ご指摘のとおり、ミスしておりました(汗)
 当方のミスでした(>。<)
 たびたび、すみませんm(_ _)m

コメント返信:

[ 一覧(最新更新順) ]


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