- ベストアンサー
EXEL 複数の文字列の中から特定の文字の数をカウントする方法
EXELで複数の文字列の中から特定の文字の数をカウントする方法を教えてください。 具体的には、A列に100名の名前ローマ字(半角英数)で入力されているとします。その中に"A","B","C",...がそれぞれ何文字ずつ含まれているのかを数えたいのです。 よろしくおねがいします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 既存のワークシート関数での方法の別解です。 =SUMPRODUCT(LEN($A$1:$A$100)-LEN(SUBSTITUTE($A$1:$A$100,"a",))) ちなみに、大文字と小文字は区別されます。
その他の回答 (4)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1です。 ちょっと、補足すると、 配列数式にしなくても、 セル範囲でカウントできます。
- imogasi
- ベストアンサー率27% (4737/17069)
#1さんのユーザー関数を利用させて頂いて (ツールーマクロ-VBE画面になります、そこでメニューの挿入-標準モジュールで出て来る画面にコピペします。)そしてデータ以外の結果を出したいセルに =SUM(countchar("a",A1:A4))といれ、SHIFTキーを押しつつCTRLキーを押し、ENTERキーを押す。配列数式となり、先頭・後尾に{と}がつきます。 (データ例) adfasd cvdas ssddd asadfa a sdaasf (結果)9 {=SUM(countchar("s",A1:A7))}なら7です。 普通の関数では文字を探すのはFind(SEARCH)しかなく、 それも1文字列の中の重複出現をカウントしにくいので ユーザー関数を作るわけです。
ワークシート関数で、カウントする方法です。 A列(仮にA2:A101セルとします)の文字列の最大の長さが15文字だとして、 =SUMPRODUCT((MID($A2:$A101,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},1)="a")*1) 上記関数では、大文字小文字を区別しません。区別する必要がある場合は =SUMPRODUCT((EXACT(MID($A2:$A8,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},1),"A"))*1) "a"などは、もちろんセル参照も可能です。 {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}の部分は、最大文字長まで一つずつ指定する必要があります。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
複数のセル範囲から、特定の文字をカウントする関数を作ってみました。 Public Function countChar(c As String, r As Range) Dim x, str, strLen, i, count count = 0 For Each x In r str = x.Value strLen = Len(str) For i = 1 To strLen If c = Mid(str, i, 1) Then count = count + 1 Next Next countChar = count End Function 使い方 A1:A100のセル範囲で、"A"が含まれる文字数を数える =countChar("A",A1:A100) 大文字小文字を区別しない場合は、 c=UCase(c) str=Ucase(str) してください