• ベストアンサー

Excelで同じセルの文字を複数回countする方法

分かりにくいタイトルで申し訳ありません。 セルに"AABC""ABAC""BCAA""BCDE"とある時に、使われている"A"の数を数えるのはどうしたら良いのでしょうか。"A"が使われているセルなら、COUNTIFで"3"と出るのですが、全部の"A"の数である"6"を出す方法が分かりません。もし方法があるのでしたら、お知恵を拝借したいです。よろしくお願いします。

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

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

#3です。 >SHFT+CTRL+ENTERをすることで{}がつくのには、どういう意味があるか SHFT+CTRL+ENTERを押すことによって、エクセルに配列数式の計算をするように依頼するわけで、「エクセル側で、判りました、そのようにしました」と言う記号だと思えば良いのでしょう。{}と決めたのは配列 入力を{}と決めたことに由来するのでしょう。 A1:B3を範囲指定して、例えば={4,5;6,8;3,1}といれ SHIFT+CTRL+ENTERで、一発でA1:B3に{}内の数値が入ります。 この辺は理系の行列の計算と関係があります。 お勧めの解説 http://pc21.nikkeibp.co.jp/special/hr/

kuontp
質問者

お礼

度々ありがとうございます。なるほど、配列数式というのがあったんですか。これは本当に勉強になりました。まだ一回目しか読んでいませんが、全部読んでちょっとでも技能を上げたいと思います。どうもありがとうございました。

その他の回答 (5)

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

ユーザー関数mojisuを作るなら 標準モジュールに Function mojisu(a, b) Dim cl As Range n = 0 For Each cl In a For i = 1 To Len(cl) If Mid(cl, i, 1) = b Then n = n + 1 End If Next i Next mojisu = n End Function (データ) aaaccv asaa ahjfgta (関数式) =mojisu(A1:A3,"a") (結果) 8

  • diashun
  • ベストアンサー率38% (94/244)
回答No.4

既回答以外の方法を・・・ ユーザー関数を利用する方法です。 以下のコードをVBAの「Module1」に貼り付けて実行してみてください。↓ ''ここからコピー*************** Option Explicit Function Count_Char(rR1 As Range, rR2 As Range, strChar As String) As Integer Dim i As Integer Dim iCells As Integer Dim iLength As Integer Dim rR As Range Dim lRowNo As Long Dim lColNo As Long Dim strCells As String Dim iCnt As Integer Set rR = Range(Cells(rR1.Row, rR1.Column), Cells(rR2.Row, rR2.Column)) iCells = rR.Count For i = 1 To iCells strCells = strCells & rR(i).Value Next i iLength = Len(strCells) For i = 1 To iLength If Mid(strCells, i, 1) = strChar Then iCnt = iCnt + 1 End If Next i Count_Char = iCnt End Function ''ここまでコピー*************** ユーザー関数の使い方でご不明な点があれば 補足にてお知らせ下さい。 上記コード中、「rR1」は範囲指定の最初のセル、 「rR2」は範囲指定の最後のセル、「strChar」はカウントしたい文字(半角、全角1文字)です。

kuontp
質問者

お礼

回答ありがとうございます。よく分からないけど、すごい方法もあるんですね。ただ今後の応用のためにも、今回は自分で分かる範囲で式をつくりたいのですが、ちょっとこれは理解をできそうにないです・・・。せっかく教えてもらったのにすいません。でも教えていただいたdiashunさんのお心遣いには感謝します。

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

(例データ)A1:A4に AABC ABAC ACAA BCAE (関数式) 配列数式 =SUM(LEN(A1:A4)-LEN(SUBSTITUTE(A1:A4,"A",""))) といれ、SHFT+CTRL+ENTER(注)で 8 (注)左手指でSHFTとCTRLキーを押さえつつ 右手指でENTERキーを押すこと。

kuontp
質問者

お礼

回答ありがとうございます。教えていただいた方法を試しましたが、これなら作業行がいらないんですね。Excelの奥の深さに、ちょっと感動さえ感じてしまってます。ところでSHFT+CTRL+ENTERをすることで{}がつくのには、どういう意味があるか教えてもらえないでしょうか?今後のために一応知っておきたいので・・・。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

その4つの文字列が、A1:D1 にあるとして "A" の数は、 =LEN(A1&B1&C1&D1)-LEN(SUBSTITUTE(A1&B1&C1&D1,"A","")) で如何でしょうか。

kuontp
質問者

お礼

回答ありがとうございます。今回は列が長かったのでN0.1の方の方法を使いましたが、このやり方を覚えておこうと思います。

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.1

作業列を使う方法でよければ、 A列に文字列が入力されていて、B列を作業列として、B1に =LEN(A1)-LEN(SUBSTITUTE(A1,"A","")) (全体の文字数-「A」なしの文字数) として以下コピーとすれば、各セルの「A」の個数が出ますので、それをSUMを使って合計されてはいかがでしょうか。

kuontp
質問者

お礼

回答ありがとうございます。教えていただいた方法を使うことで、思い通りのものを作ることができました。

関連するQ&A

専門家に質問してみよう