• 締切済み

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

セルの文字列に使われている文字を数えるにはどのようにしたら良いでしょうか?文字列は半角の英数字記号です。 例) 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

  • EXCELで、文字列を任意の文字数毎に分割するには

    ≪やりたい内容と条件≫ ◆EXCELで、文字列を任意の文字数毎に分割したいです。 ◆文字列は、全角・半角・記号を含みます。 ◆1つのセルが半角80桁という制限があり、その上限を超えると、右の次のセルに流し込まれるようにしたいです。(A1は元の文字列1500桁くらい、以降B1,C1,D1,E1・・・という具合に流し込み) ≪試した内容≫ MIDB関数を見つけ挑戦しましたが、1つ目のセルはうまくいきますが、その後が出来ません。例えば、文字列が「・・・・・・abcあいうえお」となっていた場合、B1は「・・・・・・abcあいう」、C1は「 お」(「お」の前は、半角スペース)となります。 何かよい方法はないでしょうか。 一度に出来ないようであれば、A1-B1で残りの文字列が表示できれば、それ以降はまた関数を入れて一つ一つやっていきたいと思っています。 よろしくお願いいたします。

  • Excel 文字列抜き出しについて

    図のようにA1のセルに半角空欄の混じった文字列が入っています。 半角空欄は[ _ ]赤のアンダーバーで表してあります。 B1~G1セルのように文字列を抜き出すにはどのような数式を入力したらいいのでしょうか?

  • Excel入力時、特定の列の記号を半角にしたい

    いつもお世話になっております。 Excel2013で例えば 「あいうえおabc123()+=,」などと入力するとき、うっかり全角が混入して 「あいうえおabc123()+=、」などとなってしまいます。 自動的に英数字と記号が半角になるようにはできないでしょうか。 調べると列全体を半角しか入力できないようにするやり方はあったのですが・・・

  • エクセルの文字列操作:縦に繰り返す方法

    A、B、C列に半角英数文字、D列に数字が入っています。 A、B、C列の文字が繋がり、D列の数字分繰り返されるような計算式等を考えているのですが、 繰り返しの条件が縦に繰り返さなければならない為、四苦八苦しています。 イメージとしましては、例えば A1セルが「a」B1セルが「b」、C1セルが「c」、D1セルの数字が「3」 A2セルが「AA」B2セルが「BB」、C2セルが「CC」、D2セルの数字が「5」 だとすると、 abc abc abc AABBCC AABBCC AABBCC AABBCC AABBCC といった繰り返し結果が、別の列(○1~○7)に出来て欲しいのです。 最終的には、この結果をCSVで書き出して、バーコードとして専用プリンタで印刷しようというのが目的です。 何かよい手段は無いでしょうか?あるいはエクセルでは不可能なのでしょうか? 知恵をお貸しください。 宜しくお願い致します。

  • EXCEL 文字列操作

    教えてください。 たとえば、エクセルのセルの  AAA555さくらサクラ という文字列から、英数字だけ抜き出す方法を教えてください。 文字列は可変(不規則な長さ)で、文字列中には英数の他にひらがな、 カタカナ、漢字があります。 例の結果として、AAA555を抜き出したいです。

  • EXCELで、文字列に含まれる色を判別したい

    1つのセルに、半角小文字アルファベットabc...zの文字列が入っています。 その中のいくつかのアルファベットが赤色になっています。 赤色のアルファベットだけを見つけて、別のセルにそのアルファベットを 抽出することはできるのでしょうか?

  • ユニークな文字列を作りたい。

    C♯、.NET FrameWordk2.0環境です。 戻り値として32~35桁のユニークな文字列(半角英数字のみ)を返すメソッドを 作りたいと思っています。 GUIDを発行してやれば良いかと思ったんですが、ハイフンが入っていたり、 アルファベットが大文字小文字混じっていたり(小文字のみにしたい)で、そのままでは 使えません。 発行したGUIDを、サクッと半角英数字(英字は小文字に置換)できるような方法は ないでしょうか? または、もっと簡単にユニークな文字列を発行できる方法がありましたら、ご教授 いただけるとありがたいです。 宜しくお願いします。

  • 文字列の抽出方法

    文字列より [] でくくられた半角英数字を取り出したいのですがいまいちわかりません。削除することはできたのですがどうやって取り出せばいいのかわかりません。 ▼例 こんにちは[test1234]こんばんわ ▼取り出す内容 test1234 以上宜しくお願いします。

    • ベストアンサー
    • PHP
  • エクセルである文字列をカウントしたい

    例えば、シート1のA列のセルごとに下記のいずれかの文字列が入っているとします。(文字列の1部ではなく、完全一致の文字列です。) おはよう こんにちは こんばんは そこで、シート2で上記の各文字列が記入されているセルがいくつあるか集計したいのですが、どうしたらよいでしょうか。 シート2は、A列に上記3つの文字列、B列にはそれぞれのカウント数を入れようと思っています。

  • エクセル 文字列の中から数字を抽出する方法

    エクセル 文字列の中から数字を抽出する方法 以前 QNo.5823420 で質問させて頂いたんですが 再度質問させてください。 "オーダー番号"+"半角スペース"+"部品型番"+"半角スペース"+"個数"+"半角スペース"+"部品名" というような文字列の中から個数の数のみを抽出する方法を教えてください。 "文字列"+"半角スペース"+"文字列"+"半角スペース"+・・・と文字列の繋がる数は決まってませんので 個数は何番目のスペースの後にくるかは不定です。 数量の半角"ケ"とその前の半角スペースまでの間の数字を抽出したいです。 例1)文字列 :ABC110 XXYYZZ5566 2ケ ****   抽出文字:2 例2)文字列 :ABC XYZ 5566 DDEE11 3ケ FFGG   抽出文字:3 よろしくお願いします。

専門家に質問してみよう