• ベストアンサー

セルを個別に指定し,対象の文字が入力されているセルの数を求めたい

列C1からC20に"ああああ"の文字が入力されているセルの数を数える場合 =COUNTIF(C1:C20,"ああああ")と範囲指定すると思いますが, C5,C10,C15,C20だけを対象に"ああああ"の文字が入力されているセルの数を数えたいがために =SUM(C5="ああああ",C10="ああああ",C15="ああああ",C20="ああああ")で求めています。 ただ、この数式だと C25,C30,C35,・・・・・・・とセルが増えると数式が長くなり纏まりが悪くすっきりした数式で纏まればと思っています。 いい方法がありましたら回答よろしくお願いします。

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

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

=SUMPRODUCT((MOD(ROW(C1:C20),5)=0)*(C1:C20="ああああ"))

rousanox
質問者

お礼

回答ありがとうございます。 完璧でした。やりたかったことのまさにそれでした。 意味も理解できたので今後も活用していきたいと思います。 ありがとうございました。

その他の回答 (5)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

> C10,C15,C20,C25,C30,C35,・・・・・・・となります。 > また,C列の5の倍数に該当しないセルにも"ああああ"の文字が入力されていたりします。 > (空白や別の文字が入力されているセルもあります。) 5の倍数ではないセルの"ああああ"はカウントしなくていいんですよね? ならば、仮にC10~C1000までの範囲で、行が5の倍数に該当する、"ああああ"の数は =SUMPRODUCT((MOD(ROW(C10:C1000),5)=0)*(C10:C1000="ああああ")) で求められます。

rousanox
質問者

お礼

回答ありがとうございます。 No4.の方の解答を使わせて頂きました。 その方と同様の解答を頂いたことになり,この方法が一番いい方法であると判断し質問を締め切ることといたします。 ありがとうございました。

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

選択するセルの行が、文章でルール化(XXおき)されているので、下記以外では 難しいと思う。また飛び飛びセルを指定できる関数は極く少ない。 SUMPRODUCT関数(#4) 配列数式 これで処理が遅くなると言う意見も有るが、式を複写する型と違うので、1000行までなら大丈夫でしょう。 最後にエクセルでは 操作 関数 VBA  特別プログラム(アドインやその他) が処理の4大類型だが、 VBAではユーザー関数を作れる。質問者には縁が無いかもしれないが。 標準モジュールに Function st1(a, w, Optional b) Dim cl As Range 'MsgBox a.Address If IsMissing(b) Then b = 10 For Each cl In a If cl.Row Mod b = 0 Then If cl = w Then c = c + 1 End If End If Next st1 = c End Function 関数名st1 引数(第1)カウント対象セル範囲 引数(第2)条件になる文字列。質問の="ああああ",に当たる。 引数(第3)何行おきかの数字。省略すると行番号ベースで10行 おき。3を指定したら3,6,9・・の行だけをチェックする。 例データC1:c10 ー a ー a ー a ー ー ー a ==== シートのセルに =st1(C2:C10,"a")  で1(C10 だけ対象) =st1(C2:C10,"a",2) で4 (c2、C4,C6,C8,C10を対象) 該当C2,C4,C6,C10。 ーー 配列数式では =SUM((C2:C10="a")*(MOD(ROW(C2:C10),2)=0)) と入れて、SHIFT+CTRL+ENTERを同時押しする。 上例のデータで4

rousanox
質問者

お礼

回答ありがとうございます。 No4.の方の解答を使わせて頂きました。 マクロについては全く手をつけたことがなくわからないのですが,近いうちに使えるように勉強したいと思っています。 その時参考にさせて頂きます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 作業列を使った方法になります。 ↓の画像のB2セルに =IF(OR(MOD(ROW(),5)<>0,A2<>"あああ"),"","○") という数式をいれて、オートフィルで下へコピーします。 B列のデータを元に 「あああ」の数を求めるセルに =COUNTIF(B:B,"○") という数式を入れています。 以上、参考になれば幸いです。m(__)m

rousanox
質問者

お礼

回答ありがとうございます。 画像添付もして頂き,ありがたく思うのですが,出来る限り作業列や作業用シートを作らない方法で作成しています。 MOD,ROWの関数は使用したことがなかったため解決のヒントになる気がするため参考にさせて頂きたいと思います。 言葉足らずの質問で申し訳ありませんでした。

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

こんばんは >セルを個別に指定し このルールを教えてください。 ご質問の例では「5の倍数行」というルールのように思えますが、実際の例ではどうなっていますか? 実際にはもっと複雑なルールでも、ルールさえ決まっていれば関数で対応でる可能性もあります。 具体的なルールを教えてください。

rousanox
質問者

お礼

おっしゃる通り,数えたいセルはC列に限定され5の倍数となっています。 あと,C5,C10,C15,C20,C25,C30,C35,・・・・・・・と書いていますが,実際には開始の行はC10からとなっており, C10,C15,C20,C25,C30,C35,・・・・・・・となります。 また,C列の5の倍数に該当しないセルにも"ああああ"の文字が入力されていたりします。 (空白や別の文字が入力されているセルもあります。) 言葉足らずの質問で申し訳ありません。 作業配列を作らない方法で,なおかつ関数により対処出来ればと思っています。 よろしくお願いします。

回答No.1

リンクのみ エクセルでとびとびのデータの累計の出し方 http://oshiete1.goo.ne.jp/qa5134897.html 一定間隔で離れた複数セルを参照し、指定文字が1つでもあれば「条件付き書式の設定」によりセルの色を変えたい http://oshiete1.goo.ne.jp/qa5147727.html 少なくとも配列数式やSUMPRODUCTを使うと計算速度は遅くなります。 (数式はすっきりしますが) その数式をオートフィルなどしてコピーして使うことは避けましょう。

rousanox
質問者

お礼

記入いただいたアドレスのページを開いてみましたが,私のやりたい内容と少し違うようでした。 回答ありがとうございます。

関連するQ&A