• 締切済み

エクセル 文字列に使われている文字のカウント

セルの文字列に使われている文字を数えるにはどのようにしたら良いでしょうか?文字列は半角の英数字記号です。 例) 11111 -> 1 sdsdsd -> 2 xyzxyz -> 3 abc777 -> 4 g&id#d -> 5 qwerty -> 6

みんなの回答

  • takana_
  • ベストアンサー率44% (21/47)
回答No.7

CoalTarさんとmaron--5さんの回答を参考にさせていただき、すべての文字種でもOKの方法を考えました B1に =SUM(INDEX(ISERROR(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),A1,ROW(INDIRECT("1:"&LEN(A1)))+1))*1,)) 特に配列を返させるINDEX関数は非常に参考になりました。 ※参考にされる方のために、 ROW(INDIRECT("1:"&LEN(A1)))の部分を置き換えると上の式は以下と同じです。(A1の文字数が5文字の時) =SUM(INDEX(ISERROR(FIND(MID(A1,{1,2,3,4,5},1),A1,{1,2,3,4,5}+1))*1,))

すると、全ての回答が全文表示されます。
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.6

LEN関数で LEN関数の使い方 LEN関数は引数に指定した文字列の文字数を返します。 半角文字、全角文字の区別無く、1文字として数えられます。 空白スペース、数字、句読点もすべて文字として処理されます。 B1に =LEN(A1) 下方にオートフィル

unihotate
質問者

お礼

質問の仕方がわかりにくかったかもしれませんが、 単に文字数を知りたいのではないのです。例を見てください。

すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆前回答が誤りでした ◆無視してください

すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆関数による方法です    A    B 1  11111  1 2  sdsdsd  2 3  xyzxyz  3 4  abc777  4 5  g&id#d  5 6  qwerty  6 7  asedsaa  4 B1=MAX(INDEX(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),A1),)) ★下にコピー

unihotate
質問者

お礼

11212 が 3 と判定されるようです。

すると、全ての回答が全文表示されます。
回答No.3

では数式バージョンを CHAR(33) ~ CHAR(126) まで判定 =INDEX(FREQUENCY(FREQUENCY(CODE(MID(A1,ROW(A$1:INDEX(A:A,LEN(A1))),1)),ROW($A$33:$A$126)),0),2) B1セルに 下へオートフィル

unihotate
質問者

お礼

上手くいきました。ありがとうございます。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

文字列の構成要素が半角英数字記号だけの場合の回答はもう出ているのですべての文字種でもOKのようにしてみました。 例示のようにA1からA6まで縦にデータがある場合、B1~B7に重複を除いた文字数を入力するVBAの例です。 以下の手順をおためしください。 1.AltキーとF11キーを一緒に押して Visual Basic Editor画面を呼び出します。 2.画面上部のメニューバーから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 '*****ここから下をコピペ***** Sub test01() Dim myDic As Object Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range("A1:A6") For i = 1 To Len(c.Value) myDic(Mid(c.Value, i, 1)) = vbEmpty Next i c.Offset(0, 1).Value = myDic.Count myDic.RemoveAll Next c End Sub '*****ここより上までをコピペ***** 3.またAlt+F11キーでワークシートへもどります. 4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行 これでできます。

unihotate
質問者

お礼

Scripting.Dictionary というのは知りませんでした。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

セル演算で出来ないことも無いとおもいますが、VBAを使う方が良いでしょうね。 手抜き版ですが、文字列の構成要素が半角英数字記号ならこんな感じでどうでしょう。 Sub Sample()  Dim sText As String  Dim sOne As String  Dim nAscii(128) As Long  Dim nCount As Long  sText = Range("A1") '文字種をカウントしたい文字列がA1にあると仮定  For i = 1 To Len(sText)   sOne = Mid(sText, i, 1) '文字列を1文字づつ分解(例:ABC→A)   nAscii(Asc(sOne)) = 1 'アスキーコード(例:A=65)に該当する配列に1を代入  Next i  '配列の値を合計=文字種の数  For i = 0 To 128   nCount = nCount + nAscii(i)  Next i  MsgBox ("文字の種類:" & nCount) End Sub

unihotate
質問者

お礼

VBAを使うとわかりやすくできますね。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう