• 締切済み

Excelの範囲内カウント方法について

Excelの指定した範囲内のセルに入力されている国語、数学、社会の個数をカウントしたい場合です。カウントイフの数式+でつなぐ方法しかないんですか?

みんなの回答

  • msMike
  • ベストアンサー率20% (368/1812)
回答No.9

[No.7]への補足へのコメント、 》 これはマクロですかね?? それが、“ベストアンサー率 34%”という超ベテランの、マクロ音痴の私への真面目なコメントとは到底信じられませぬッ! [数式バー]に示したように、「カウントイフの数式+でつな」がない、僅か1個を使用しただけの、チョー簡単な回答でした。 ちなみに、式中の Range は、赤地のセル A11 に白フォントで明記していたように、範囲 A1:F10 に付けた単なる範囲名なので、当該式は式が長くなるけど(だから、私は名前多用派の一匹狼です(*^_^*))、 =COUNTIF($A$1:$F$10,C13) と同じことです。 もう一つ、ちなみに、 範囲 A1:F10 を選択⇒マウスポインタを[名前ボックス]内に放り込み⇒そこに在った文字列“A1”を文字列“Range”に上書き⇒Enterを「エイヤッ!」と憎々し気に叩き付けて、名前 Range を作成した次第です。 諄くなった序でに、式 =COUNTIF($A$1:$F$10,C13) を入力したセル C14 は右方にオートフィルするだけぇ~、です。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.8

回答No.4の補足です。 回答No.4で =SUMPRODUCT((A1:A10=B1:D1)*1) B1:D1に空白があってA1:A10にも空白があるとそれも足してしまいました。 と回答しましたが B1:D1の空白になるセルにたとえばダミーとかA1:A10に出てこない文字列を入れておけば大丈夫です。 ただし、一列もしくは一行だけの対応になると思いますから 複数行だと =SUMPRODUCT((A1:A10={"国語","数学","社会"})*1)+SUMPRODUCT((B1:B10={"国語","数学","社会"})*1) 横方向一行でしたら =SUMPRODUCT((G11:N11=TRANSPOSE({"国語","数学","社会"}))*1) 複数行だと =SUMPRODUCT((G11:N11=TRANSPOSE({"国語","数学","社会"}))*1)+SUMPRODUCT((G12:N12=TRANSPOSE({"国語","数学","社会"}))*1) 複数行や列だと場合によってはCountifで繋げたほうがいいかもですね。 ちなみに強引な作戦の自作関数でしたら =mCountIF(A1:B10,"国語","数学","社会") で、範囲は複数行や複数列でも大丈夫です。

pusuta
質問者

お礼

大変詳しい回答ありがとうございましした。チョット難しそうですがやってみたいと思います。

Powered by GRATICA
  • msMike
  • ベストアンサー率20% (368/1812)
回答No.7

添付図参照(Excel 2019)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓

pusuta
質問者

お礼

この方法は初めて知りました!試してみます。

Powered by GRATICA
pusuta
質問者

補足

これはマクロですかね??

  • NuboChan
  • ベストアンサー率47% (799/1673)
回答No.6

例えば、 Excelの指定した範囲内のセルに入力されている国語、数学、社会の各文字列の個数をカウントするVBAのコード Sub CountSubjects() Dim rng As Range Dim countJapanese As Integer Dim countMath As Integer Dim countSocial As Integer Set rng = Range("A1:C10") '指定した範囲内のセルを選択 countJapanese = WorksheetFunction.CountIf(rng, "国語") '国語の個数をカウント countMath = WorksheetFunction.CountIf(rng, "数学") '数学の個数をカウント countSocial = WorksheetFunction.CountIf(rng, "社会") '社会の個数をカウント MsgBox "国語: " & countJapanese & vbCrLf & "数学: " & countMath & vbCrLf & "社会: " & countSocial 'メッセージボックスに表示 Set rng = Nothing End Sub

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

#2です。補足に関連して。 (1)国語のセル何セル、数学のセル何セル、社会のセル何セルを3セルに入れる関数で出すのは簡単で=COUNTIF(A1:B5,"国語")とい関数で出来るのでは。 (2)国語のセル+数学のセル+社会のセル(科目で重複して出現はそのまま各々+1と数える)    セル数 (3)国語のセル、数学のセル、社会のセルについて異なる科目は何種類か?2回目以降出現は数えない。 このうち、どのタイプの質問をしたのか? AND条件的な関数はあっても、OR条件的な関数は無いことが多い。各々の該当件数を+で足せば仕舞、とエクセルの設計者は考えたのではないかな。 それを嫌がったら、難しい関数やVBA利用だろう。 ーー (2)、(3)は意外に関数では難しい。VBAではやや簡単。 ーー (2)の質問と思ったが。 ユーザー関数なら、VBA関連だが、標準モジュールに下記を作っておく。 Function cf(rng As String, k1 As String, k2 As String, k3 As String) cnt = 0 For Each cl In Range(rng) If cl.Value = k1 Then cnt = cnt + 1 'MsgBox cl.Address End If If cl.Value = k2 Then cnt = cnt + 1 'MsgBox cl.Address End If If cl.Value = k3 Then cnt = cnt + 1 'MsgBox cl.Address End If Next cf = cnt End Function (もうすこし改良が出来る店があるかも。) そしてシートのセルに、関数の入れ方(例)データがA1:C6セル範囲内として)は  =cf("A1:C6","国語","社会","数学") のように入れる。 A1:C6セル あ い う 国語  え うう さ さし すせ そ 数学 た な 国語 社会 社会 たた 国語 の例では、結果は6(セル)。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.4

> やっぱマクロですかね。 その後、ごぞごぞしてたら以下の方法でできました。 =SUMPRODUCT((A1:A10={"国語","数学","社会"})*1) 後半を範囲指定した場合 =SUMPRODUCT((A1:A10=B1:D1)*1) B1:D1に空白があってA1:A10にも空白があるとそれも足してしまいました。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

> 範囲指定で、その後に("国語”,"数学","社会")みたいにできるといいのですが… 回答No.2さんが紹介しているサイトの配列数式を利用するか、強引に自作関数とか… =mCountIF(A1:A10,"国語","数学","社会") 標準モジュールに以下を記載して上記の式で Function mCountIF(ByRef mRng As Range, ParamArray FStr() As Variant) As Long Dim mStr As Variant Dim mCount As Long mCount = 0 For Each mStr In FStr mCount = mCount + WorksheetFunction.CountIf(mRng, mStr) Next mCountIF = mCount End Function ただ VBAを記載したファイル限定か 個人用マクロブックに記載して =PERSONAL.XLSB!mCountIF(A1:A7,"国語","数学","社会") とかで個人用マクロブックが存在するPC限定とかになりますが…

pusuta
質問者

お礼

回答ありがとうございました。やっぱマクロですかね。なんか簡単にできそうなのに、該当する関数がないのでちょっと意外だったんです。

Powered by GRATICA
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2
pusuta
質問者

お礼

すみません。補足の内容が間違ってたんですが変更できなかったのでこちらにしました。国語何個ということではなく、国語、数学、社会と入力されたセルの数の合計を1つの関数でできないかなということです!!

Powered by GRATICA
pusuta
質問者

補足

リンク先ありがとうございました。初めて聞く関数でした。私がやりたいのは、例えばA1:F10の範囲内にランダムに、国語、数学、社会とセルに入力されているのもをそれぞれ、国語何個というように出したいんです。リンク先のように1つ目の範囲、2つ目というものではないのですが、この関数も使えますかね??

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

=SUMPRODUCT((A1:A10="国語")+(A1:A10="数学")+(A1:A10="社会")) とかでも計算できます。

pusuta
質問者

お礼

回答ありがとうございます。やっぱこんな感じでつなぐ方法しかないんですかね~範囲指定で、その後に("国語”,"数学","社会")みたいにできるといいのですが…

Powered by GRATICA

関連するQ&A