• ベストアンサー

エクセル関数 行ごとで数字の種類を数えて抽出

添付のような表が作りたいです。 A群とB群にそれぞれ0~6までの数字が入っています。 行ごとで1~6のうち数字の種類が3種類以上だったら〇、3種類未満だったら×と入力します (0はすべて無視します)。 どちらの群にも1種類以上の数字が入っていなくてはいけません(片方の群に3種類ではNG)。 私には難解すぎるのでお助けください。

質問者が選んだベストアンサー

  • ベストアンサー
  • intin
  • ベストアンサー率33% (8/24)
回答No.3

I3セルに下記を入力して、 下にコピーをすれば計算できます。 =IF(AND(SUMPRODUCT(SIGN(COUNTIF(A3:H3,{1,2,3,4,5,6})))>=3,SUM(A3:D3)>0,SUM(E3:H3)>0),"○","×") 配列数式を使っているので、 ちょっとわかりにくいのが欠点ですが。

honeybeans
質問者

お礼

高度なテクニックですね。1行にまとまっていていいですね。ありがとうございました。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>A群とB群にそれぞれ0~6までの数字が入っています。 という条件が確実に守られている場合には、I2セルに次の関数を入力してから、I2セルをコピーして、I3~I5の範囲に貼り付けて下さい。 =IF(AND(SUM($A2:$D2),SUM($E2:$H2),SUMPRODUCT((COUNTIF($A2:$H2,{1,2,3,4,5,6})>0)*1)>2),"〇","×")  或いは、 =IF(AND(SUM($A2:$D2),SUM($E2:$H2),SUMPRODUCT(ISNUMBER(MATCH({1,2,3,4,5,6},$A2:$H2,0))*1)>2),"〇","×")  又、もし >A群とB群にそれぞれ0~6までの数字が入っています。 という条件が必ずしも保障されておらず、マイナスの値や1.5の様な少数部分を含む値、6を上回る値、等が入力されている事もあり得るという場合には、I2セルに入力する関数を次の様なものとして下さい。 =IF(AND(SUMPRODUCT(COUNTIF($A2:$D2,{1,2,3,4,5,6})*1),SUMPRODUCT(COUNTIF($E2:$H2,{1,2,3,4,5,6})*1),SUMPRODUCT((COUNTIF($A2:$H2,{1,2,3,4,5,6})>0)*1)>2),"〇","×")  或いは、 =IF(AND(SUMPRODUCT(ISNUMBER(MATCH({1,2,3,4,5,6},$A2:$D2,0))*1),SUMPRODUCT(ISNUMBER(MATCH({1,2,3,4,5,6},$E2:$H2,0))*1),SUMPRODUCT(ISNUMBER(MATCH({1,2,3,4,5,6},$A2:$H2,0))*1)>2),"〇","×")

honeybeans
質問者

お礼

詳しく教えていただいてありがとうございました。やってみてできました。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.2

K2: =IF(OR(A2=0,COUNTIF($A2:A2,A2)>1),"",COUNTIF($A2:A2,A2)) 此れを右方にオートフィル I1: =IF(OR(COUNTIF(A2:D2,0)=4,COUNTIF(E2:H2,0)=4),"×",IF(SUM(K2:R2)>2,"○","×")) 範囲 I2:R2 を下方にオートフィル

honeybeans
質問者

お礼

できました。勉強になります。ありがとうございました。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

J2に =IF(ISNA(MATCH(COLUMN(A1),$A$2:$H$2,0)),0,1) と式を入力して O2まで フィルしてください。 1から6までの数値が範囲内にあるかどうかをそれぞれの数値に対して調べています。あれば1なければ0になります。 P2に =SUM(J2:O2) と式を入力してください。 範囲内にあった数値の個数を数えています。 I2に =IF(OR(SUM(A2:D2)=0,SUM(E2:H2)=0),"×",IF(P2>=3,"○","×")) と式を入力して I5までフィルしてください

honeybeans
質問者

お礼

やってみましたが、できませんでした。