• 締切済み

関数についての質問です。難問です。

=SUMPRODUCT(1/COUNTIF($A$1:$A$3000,$A$1:$A$3000)) で、何種類のデータがあるのかを把握することが出来たのですが、 B列に1、2、3という数字がふってあり、更にB列が1だった場合の何種類のデータがあるのか?というものを関数で作成したいのですが… A列 B列 50 1 51 2 51 3 51 2 53 1 53 1 B列の1でデータを取ると2が。 B列の2でデータを取ると1が。 B列の3でデータを取ると1が。 出てくれるとありがたいのですが…? 出来そうですか?

みんなの回答

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆誤りがありましたので、訂正します >B1:B10=1の部分が、B:B=C1とかでも成立しますか? ◆B1:B10=C1 は成立しますが、B:B=C1 は成立しません ◆「配列数式」やSUMPRODUCT関数では、B:B のような範囲指定はできません

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

>B1:B10=1の部分が、B:B=C1とかでも成立しますか? ◆成立します >それと、空白が入ってしまうと、#NUM!になってしまいますか? ◆#NUM! にはなりません ◆ただし、B列が入力されて、A列が空白の場合カウントされます ★上記の条件を考慮し、訂正しました =IF(C1="","",SUMPRODUCT((B1:B100=C1)*(A1:A100<>"")*(MATCH(A1:A100&B1:B100,A1:A100&B1:B100,0)=ROW(A1:A100)))) ◆一度、確認してください

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

配列数式でやってみました。 例データ A1:B15 50 1 51 2 51 3 51 2 53 1 53 1 54 1 54 1 55 1 58 1 58 1 19 2 20 2 20 2 22 1 データのある以外のせるに、 B列が1のA列の種類 =SUM(IF((B1:B15=1)*(COUNTIF(OFFSET($A$1:$A$15,0,0,ROW(A1:A15)),A1:A15)=1),1,0)) と入れて、SHIFT+CTRL+ENTER 結果 6 ーーー B列が2の行の,A列の種類 =SUM(IF((B1:B15=2)*(COUNTIF(OFFSET($A$1:$A$15,0,0,ROW(A1:A15)),A1:A15)=1),1,0)) と入れて、SHIFT+CTRL+ENTER 結果 3 ーーー 意味はB1:B15について、その行が1であること、かつ(これは*で実現できる) $A$1から注目の行まで、注目の行の数字がCountIfして1であること。 の両条件を満たすものを1、それ以外のものを0として第1行-第15行までの分を加えている。 ーー =COUNTIF($A$1:A10,A10)で、A10の値がが、1なら初出、2以上だと重複、がわかる。 これを配列数式向きに工夫したもの。

emi_901
質問者

補足

B1:B15の部分を、B:Bにしても成立しますよね? 空白があったら、まずいですか? B1:B15=1の部分の1が、C1とかでも平気ですか? とりあえず、#NUM!になってしまい、出来ません。。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

>B列の1でデータを取ると2が。 =SUMPRODUCT((B1:B10=1)*(MATCH(A1:A10&B1:B10,A1:A10&B1:B10,0)=ROW(A1:A10))) >B列の2でデータを取ると1が。 =SUMPRODUCT((B1:B10=2)*(MATCH(A1:A10&B1:B10,A1:A10&B1:B10,0)=ROW(A1:A10))) >B列の3でデータを取ると1が。 ◆練習でお作りください ◆=SUMPRODUCT(1/COUNTIF($A$1:$A$3000,$A$1:$A$3000)) ★この式は未入力セル対応をしていないと思いますが? ◆文字にも対応した式として、maronは通常下の式を使っています =COUNT(INDEX(1/(MATCH(A1:A100,A1:A100,)=ROW(A1:A100)),)) ★上の式は、未入力セル対応しています

emi_901
質問者

補足

B1:B10=1の部分が、B:B=C1とかでも成立しますか? それと、空白が入ってしまうと、#NUM!になってしまいますか?

関連するQ&A