プロが教える店舗&オフィスのセキュリティ対策術

以下の表を関数で纏めたいのですがどうすればよろしいでしょうか



最も値が大きいセル    / 「A1とA2の和」 /  「パターン」
↓             ↓           ↓
  A1の場合     →   条件無       → 上得意
  A2の場合     →   条件無       → 得意先
  A3の場合で尚且つ  →  11以上       → 契約先
  A3の場合で尚且つ  →  10以下       → 掘り起し

 例 A1の値 3
   A2の値 4
   A3の値 7
 
   A1;A3の中で最も大きい値がA3となり、A1とA2の和が7<=10なので
   この場合”掘り起し”と表記したい。


 上記2列はIF(MAXで、下二列はIF(AND(MAX関数になるとおもうのですが
 全部組み合わせると全くうまくいきません。
 
 正しい式を教えてください。お願いします。

A 回答 (6件)

質問文の上から順番に関数を立てるとやり難いので順番を入れ替えつつ,なるべく条件が変わらない様に解釈を変えて関数を組み立てると



=IF(MAX(A1:A3)=A3,IF(SUM(A1:A2)>=11,"契約先","掘り起し"),IF(A1>A2,"上得意","得意先"))

質問文を読み違えてなければ先ずA3のセルが最も大きい場合には2パターンあって,それぞれA1+A2が11以上の場合と10以下の場合に契約先と掘り起こしのいずれかが表示される.
ここで1つ"A1からA3のセルに入力される数値が整数且つ同じ数値にはならない"という前提条件があれば,A1+A2が11以上の場合とそれ以外の場合という書き方になるので,IF(SUM(A1:A2)>=11,"契約先","掘り起し")とまとめる事ができます.
ではA3が最大の値ではない場合についてはA1の場合では上得意,A2の場合では得意先とすればよいので,IF(A1>A2,"上得意","得意先")
IF(SUM(A1:A2)>=11,"契約先","掘り起し")とIF(A1>A2,"上得意","得意先")を1つにまとめるにはA3のセルが最大値なのか,最大値ではないのかを判定すればよいので
=IF(MAX(A1:A3)=A3で判定すればよいと考えました.

もし厳密にA1+A2が11以上または10以下(10超11未満の値の判定は不明なのでとりあえず空白とします)を記載する必要があるなら
IF(SUM(A1:A2)>=11,"契約先","掘り起し")の部分を
IF(SUM(A1:A2)>=11,"契約先",IF(SUM(A1:A2)<=10,"掘り起こし",""))
に書き換えて下さい.
    • good
    • 0

関数の組み合わせでも可能とは思いますが、明日になったら改修できなくなります(私なら)。


ユーザ関数での実装をお勧めします。
例えば、こんな感じで。

Function MyRank(A1 As Variant, A2 As Variant, A3 As Variant) As Variant
MyRank = CVErr(xlErrNA)
If (A1 > A2 And A1 > A3) Or _
(A1 = A3 And A1 <= 6) Then
MyRank = "上得意"
ElseIf (A2 > A1 And A2 > A3) Or _
(A2 = A1) Or _
(A2 = A3) Then
MyRank = "得意先"
ElseIf (A3 > A1 And A3 > A2 And A1 + A2 >= 11) Then
MyRank = "契約先"
ElseIf (A3 > A1 And A3 > A2 And A1 + A2 <= 10) Or _
(A1 = A3 And A1 >= 7) Then
MyRank = "掘り起し"
End If
End Function
    • good
    • 0

>この場合だと全部「掘り起し先」になってしまいました。


少なくともtom04さんと同じ解釈しました。
3つのセルの中でA3セルが最大 かつ A1+A2が10以下のときのみ
「掘り起し」となります。
(入力ミスだとは思いますが、「掘り起し先」とはなりません。)

> 優先順位をつけるべきなのでしょうか
A1:A3で同じ値の場合は、MATCHの照合の型は0ですので
行番号の小さな方(上)のセルを優先しています。
なぜなら、そのような説明は一切ないからです。

>優先順位としては
>最も値が大きいセルが重要で、A3が一番大きい時にだけA1とA2の和が必要になります。
そのように書いています。

>またA2の値が他のA1.A3と同数の場合は「得意先」となり
つまり、3つとも同じ値の場合は「得意先」となるのでしょうか?
「同数」って、何かを数えているのでしょうか??

> A1とA3が同数の場合 その値が6以下で上得意、7以上で同数ならば
> 掘り起しといった具合なんですが。
そんな条件質問にありませんが??

>ややこし過ぎて関数では無理でしょうか
すべてのパターンが網羅されていれば、関数を組み合わせることでできます。

それぞれの関数の意味を理解したうえで返答してもらいたいです
    • good
    • 1
この回答へのお礼

関数は万能だけど、かっちりしていないと答えが出ないものなんですね。
はーむつかしい

行番号が実際はA1→Z A2→AA A3→ABだったから
答えが違うって事ですね。あってますかね?


> A1とA3が同数の場合 その値が6以下で上得意、7以上で同数ならば
> 掘り起しといった具合なんですが。
そんな条件質問にありませんが??

>これともう一個の条件が同数の時を言ってなかったからかなーと
そんで答えが出なかったのかなーと思ってました。

MATCHの照合の型は0ですので
行番号の小さな方(上)のセルを優先しています。

>もうなにがなにやら、



エクセル初心者で悪戦苦闘しています。

私なら本当なら放っておく者を、わざわざ回答ありがとうございます。

しかし難しい。日本語を関数に翻訳してくれるソフトがあったらなーって
それすら使いこなせそうですが

なにはともあれ教えて頂いたのをいじってみます。

お礼日時:2016/02/05 19:21

No.2です。


投稿後間違いに気づきました。

>「A1とA2の和」
を見逃していました。

=IF(OR(A1=MAX(A1:A3),A2=MAX(A1:A3)),INDEX({"上得意","得意先"},MATCH(MAX(A1:A2),A1:A2,0)),IF(SUM(A1:A2)>10,"契約先","掘り起し"))
としてみてください。

どう見てもNo.1さんの数式の方が簡潔ですね。m(_ _)m
    • good
    • 0
この回答へのお礼

お礼

同じく、
この場合だと全部「掘り起し先」になってしまいました。
優先順位をつけるべきなのでしょうか

優先順位としては
最も値が大きいセルが重要で、A3が一番大きい時にだけA1とA2の和が必要になります。

またA2の値が他のA1.A3と同数の場合は「得意先」となり
A1とA3が同数の場合 その値が6以下で上得意、7以上で同数ならば
掘り起しといった具合なんですが。

ややこし過ぎて関数では無理でしょうか

お礼日時:2016/02/05 17:39

こんにちは!



=IF(OR(A1=MAX(A1:A3),A2=MAX(A1:A3)),INDEX({"上得意","得意先"},MATCH(MAX(A1:A2),A1:A2,0)),IF(A3>10,"契約先","掘り起し"))

こういうコトでしょうか?

じっくり考えればもっと簡単になるかもしれませんが、
とりあえずはこの程度で・・・m(_ _)m
    • good
    • 0

一案です


=CHOOSE(MATCH(MAX(A1:A3),A1:A3,0),"上得意","得意先",IF(SUM(A1:A2)>10,"契約先","掘り起し"))
    • good
    • 0
この回答へのお礼

この場合だと全部「掘り起し先」になってしまいました。
優先順位をつけるべきなのでしょうか

優先順位としては
最も値が大きいセルが重要で、A3が一番大きい時にだけA1とA2の和が必要になります。

またA2の値が他のA1.A3と同数の場合は「得意先」となり
A1とA3が同数の場合 その値が6以下で上得意、7以上で同数ならば
掘り起しといった具合なんですが。

ややこし過ぎて関数では無理でしょうか

お礼日時:2016/02/05 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!