• 締切済み

IF関数のネストについて

A列~E列に評価の点数が入力されています。 もし同じ点数のセルが3つ以上あればF列にその同じセルを表示、 同じセルが3つ以下の場合だったら、A列~E列の平均点を表示させる場合 どのようにネストを組めばよいでしょうか? よろしくお願いします。

みんなの回答

  • yosifuji20
  • ベストアンサー率43% (2675/6115)
回答No.2

これはifでできないこともありませんが式が複雑すぎます。 それよりは、少し原始的ですが可能性のある組み合わせを全部考えて、それを一個づつ式にしてどれかがヒットするかを見たほうが判りやすいと思います。 具体的には、組み合わせは下記のとおりです。 ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE この条件に合う場合は左端の値をとり、それ以外はゼロという式を作り、列G;列Pに並べます。 式 列G =If(AND(A1=B1,A1=C1),A1,0) 列H =If(AND(A1=B1,A1=D1),A1,0)  以下P列まで同様に式を設定 列Q =MAX(G1:P1)   G:Pの間の最大数を取る 列R =If(Q1>0,Q1,Average(A1:F1))   Q1>0ということは3個一致がある場合、ゼロのときはないから平均値を取る。 以上で列Rに答えが得られます。 でも実際はこのような問題はVBAで組んだほうがはるかに簡単ですね。 IfではなくAND関数を使っています。意味はHELPでご覧ください。

kuma3kuma3kuma3
質問者

お礼

おっしゃる通り、複雑な式になってしまいますよね。 実はわたしも友人から聞かれたもので友人に教えてあげるには yosifuji20さんのものは少し説明しにくかったものですから、 今回は強引にCOUNTIFを使わせて頂きました。 でも私自身とても勉強になりました。 ありがとうございます!

回答No.1

セル[A1]~[E1]に点数が入っているとした場合にセル[F1]に以下の式を入力すればよいのでは ないでしょうか? 「=IF(COUNTIF($A1:$E1,$A1)=3,A1,IF(COUNTIF($A1:$E1,$B1)=3,$B1,IF(COUNTIF($A1:$E1,$C1)=3,$C1,AVERAGE($A1:$E1))))」 ・A1と同じ値が3つあればその値を表示      ↓ ・B1と同じ値が3つあればその値を表示      ↓ ・C1と同じ値が3つあればその値を表示      ↓ ・それ以外は5つの値の平均を表示

kuma3kuma3kuma3
質問者

お礼

ありがとうございます! =を>=にしてみたら求めたい値がでました!!

関連するQ&A