• ベストアンサー

至急★★エクセル・COOUNTIFで計算セルの指定方法を教えてください

こんにちは。いろいろ調べましたが、わからないので教えてください。 該当データーを数えるCOOUNTIFを使って集計しているのですが、どうしてもうまくいきません。 計算セルですが、ここからここまで(A1:A30)という、つながっている範囲ではなく、 こことこことここのセルから(A1,A5,A7,A15・・・)という指定がしたいのですが、どうしたら良いのでしょうか? A列の中の「C]という文字を数えたい場合、範囲の場合は =COUNTIF(A1:A10,"C") で、できるのですが セル指定の場合は =COUNTIF(A1,A5,A7,A15,A22,"C")や =COUNTIF((A1,A5,A7,A15,A22),"C") などと入力してみてもダメでした。 これができないと、仕事がぜんぜん先に進まないので、すみませんが、お願いします~!!!!

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 >同じようなことをA列だけではなく、B列からもしたいのですが(全部で50列ほどあります)、数式をコピーすると、すべてA列の計算となってしまいます。 すみません。なかなか、思い切りが出来ないもので、つい、安易な方法に頼って墓穴を掘ってしまいました。(^^; 今度は、検索値と検査範囲の順番が逆になります。 前回のは、無視してください。たぶん、ExcelのVersion にも左右されないかと思います。 Function PCOUNTIF(ByVal 検索値, ParamArray 範囲())   Dim c As Variant, k As Variant, cnt As Long   Application.Volatile   For Each c In 範囲    If c.Count > 1 Then      For Each k In c       If k.Value Like 検索値 & "*" Then         cnt = cnt + 1       End If      Next      Else      If c.Value Like 検索値 & "*" Then       cnt = cnt + 1      End If    End If   Next   PCOUNTIF = cnt End Function なお、つまらない話ですが、PCOUNTIFは、パラメータのPのCOUNTIF という意味です。 使用法: =PCOUNTIF("C",A1,A5,A10, A15,A22)   ドラッグ・コピーが可能になりました。 もちろん、こういう方法もアリです。 =PCOUNTIF("C",A1:A5,A10, A15,A22) なお、Like 検索値 & "*" という検索方法は、Excelの全般的な検索方法に従い、例えば、ABC が検索値ですと、検索されるデータ側が、ABCD も ABCDE もそのカウントに入れるという考え方に基づいています。したがって、そういう方法がよけいなおせっかいということでしたら、  Like 検査値 Then と書き換えてください。ぴったり同じものを数に入れます。 今回は、出来栄えはよいと思います。

その他の回答 (8)

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

各列のカウントする勘定に1,5,7,15・・行が共通なら、ワーク列(たとえば使っていないW列とする)の 1,5,7,15、・・にしるし(1など)を入力し A列がCでW列が1というカウントをすればよいと思うが、この方法は使えませんか。 A1:D11に A列  B列      D列(上記ではW列といっていたもの) a 1 s 2 c 3 1 d 4 f 5 g 6 c 7 s 8 w 9 e 3 c 4        1 B列の計数合計なら 式=SUMPRODUCT((A1:A11="c")*(D1:D11=1)*(B1:B11)) 結果は7です。 件数を出すのであれば、=SUMPRODUCT((A1:A11="c")*(D1:D11=1)*1)です。 B列的な列が沢山あれば、式が複写できるように式を入れる場所を工夫してください。

orennji1111
質問者

お礼

ご回答くださった皆様、ありがとうございます。 私が入力したものでは、まったくダメだったんですね・・・。 ご親切に教えてくださってありがとうございました。 なんとか目的どうり、作ることができました。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.7

1,5,7,15行目だけに共通の項目はありますか? 例えばC列に"A"が入力されているとすれば =SUMPRODUCT((A1:A30="C")*(C1:C30="A")) とすれば計算できます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 >=COUNTIF((A1,A5,A7,A15,A22),"C") これ自体は、どうやっても無理ですね。 ユーザー定義関数を考えてみました。 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、このコードを貼り付けて、 再び、Alt + F11 で、画面を閉じます。 Function FCOUNTIF(文字列の範囲, 検索文字 As String) As Long   Dim myArray As Variant, rng As Variant, myRng As Range   Dim cnt As Long   Application.Volatile   If VarType(文字列の範囲) = 8204 Then    FCOUNTIF = Application.WorksheetFunction.CountIf(文字列の範囲, 検索文字)    Exit Function   End If   If InStr(文字列の範囲, ",") > 0 Then    myArray = Split(文字列の範囲, ",")    For Each rng In myArray      If myRng Is Nothing Then       Set myRng = Range(rng)       Else       Set myRng = Union(myRng, Range(rng))      End If    Next rng    For Each c In myRng      If c.Value Like 検索文字 & "*" Then       cnt = cnt + 1      End If    Next   End If   FCOUNTIF = cnt End Function 使い方は、一般の関数と同じですが、引数を「" "(クォーテーションマーク)」で囲みます。 このようにします。 =FCOUNTIF("A1,A5,A7,A15,A22","C") また、以下のように、範囲を間に含めることも可能です。 =FCOUNTIF("A1:A5,A7,A15,A22","C") また、通常のCOUNTIF のように使うことも可能です。 その場合は、引数に「" "」は、つけないでください。 =FCOUNTIF(A1:A5,"C")

orennji1111
質問者

お礼

詳しいご説明ありがとうございます。 さっそくやってみたのですが(コピーして・・・)うまくいきました。 ただ、同じようなことをA列だけではなく、B列からもしたいのですが(全部で50列ほどあります)、数式をコピーすると、すべてA列の計算となってしまいます。 これは、列を変えるたびにいちいち入力するしかないのでしょうか? とてもたくさんあるので、できればコピーしたいのですが、何か良い方法があれば教えてください。 引き続き、甘えて申し訳ありませんが、よろしくお願い致します。

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.5

こんな数式はどうでしょう? =(A1="C")+(A5="C")+(A7="C")+(A15="C")+(A22="C") ちょっと面倒ですかね。

  • tessyu
  • ベストアンサー率53% (59/110)
回答No.4

#3です。 すみません、間違えました。

  • tessyu
  • ベストアンサー率53% (59/110)
回答No.3

=COUNTIF((A1):(A5):(A15),"C") で、どうですか?

noname#112806
noname#112806
回答No.2

なぜ検索範囲が連続していないのかがよく分からないのですが、その検索範囲に規則性はありますか?

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

=COUNTIF(A1,"C")+COUNTIF(A5,"C")+~ ではダメですか?