• ベストアンサー

文字の個数

Excel2013 指定した文字の個数を求めたい。 例えば、 A1からJ1に入力された"a"の数をK1に表示。 続いてA2からJ2に入力された"b"の数をK2に表示。 関数ではなくて、VBでコードを書きたいのですが、どなたがVBに詳しい方教えて下さい。よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.3

> =COUNTIF(A1:J1,"a")となるのでしょうか。 その場合、abcは個数に入りませんがそういう仕様ですか? > 行は10行くらで、 > 列は10列くらいなので、J1としました。 1行目にはaで2行目にはbで3行目以降は不明ですが、それともすべての行でaとbの個数を合算した結果をそれぞれK列L列にに出すのでしょうか。どちらにしても、回答されたコードをご自身で解析してご自身の仕様に合うように改良する必要がありますが、不明な部分が多いので、とりあえず それぞれの行でaの個数はK列にbの個数はL列に表示するということとして3種類の例を示します。 Sub Example1() 'a及びbの文字総数を求める Dim c As Range Dim i As Integer, j As Integer Dim samplestr(2) As String Range("K:L").ClearContents samplestr(0) = "a" samplestr(1) = "b" For i = 1 To 10 For Each c In Range(Cells(i, "A"), Cells(i, "J")) Cells(i, "K").Value = Cells(i, "K").Value + (Len(c.Value) - Len(Replace(c.Value, samplestr(0), ""))) / Len(samplestr(0)) Cells(i, "L").Value = Cells(i, "L").Value + (Len(c.Value) - Len(Replace(c.Value, samplestr(1), ""))) / Len(samplestr(1)) Next Next End Sub Sub Example2() '文字列にa及びbを含む文字列の個数を求める Dim c As Range Dim i As Integer, j As Integer Dim samplestr(2) As String Range("K:L").ClearContents samplestr(0) = "a" samplestr(1) = "b" For i = 1 To 10 For Each c In Range(Cells(i, "A"), Cells(i, "J")) If InStr(1, c.Value, samplestr(0)) > 0 Then Cells(i, "K").Value = Cells(i, "K").Value + 1 End If If InStr(1, c.Value, samplestr(1)) > 0 Then Cells(i, "L").Value = Cells(i, "L").Value + 1 End If Next Next End Sub Sub Example3() 'COUNTIFと同じ結果 Dim c As Range Dim i As Integer, j As Integer Dim samplestr(2) As String Range("K:L").ClearContents samplestr(0) = "a" samplestr(1) = "b" For i = 1 To 10 For Each c In Range(Cells(i, "A"), Cells(i, "J")) If c.Value = samplestr(0) Then Cells(i, "K").Value = Cells(i, "K").Value + 1 End If If c.Value = samplestr(1) Then Cells(i, "L").Value = Cells(i, "L").Value + 1 End If Next Next End Sub

akiyes
質問者

お礼

kkkkkmさん、ありがとうございます。 帰宅したら早速試してみます。

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

一応関数案ですが K列に =SUM(LEN(A1:J1)-LEN(SUBSTITUTE(A1:J1,"a",""))) と入れて Ctrl+Shift+Enter で決定して配列関数にする L列も同様 =SUM(LEN(A1:D1)-LEN(SUBSTITUTE(A1:D1,"b",""))) で 下へコピーではだめですか?

akiyes
質問者

お礼

hallo-2007さん、ありがとうございます。 今後のVBの応用にと思ってますので、すいませんが今回はVBで解決したいです。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>例えば、 >A1からJ1に入力された"a"の数をK1に表示。 >続いてA2からJ2に入力された"b"の数をK2に表示。 この例が意味深で、行が進むにつれて逐次、a、b、c・・・と変化する? "a"の値はいいとして、"z"の次は? "aa"を数えることはある? そのとき、"aaaa"の中に"aa"は何個と定義する。などの疑問がありますが、"aaaa"には"aa"が2個と定義して、いずれの場合にも対応できるようにユーザー定義関数を作りました。 =CountCharacter("a",A1:J1) =CountCharacter("b",A2:J2) のように使います。 標準モジュールに貼り付け Function CountCharacter(c As String, SearchRng As Range)   Dim rg As Range   '検査するセル   Dim num As Integer '見つけた個数      For Each rg In SearchRng     num = num + (Len(rg.Text) _        - Len(Application.Substitute(rg.Text, c, ""))) / Len(c)   Next   CountCharacter = num End Function

akiyes
質問者

お礼

早速、ありがとうございます。 まだ試してないのですが、私の質問が不十分ですいませんでした。 行は10行くらで、 列は10列くらいなので、J1としました。 関数だとK1に =COUNTIF(A1:J1,"a")となるのでしょうか。 それをタテ10行、横10列でVBならと思いやってみたんですが、私には難しく質問させて頂きました。 "a"は実際は日本語で簡単な略語なんですが、aとさせて頂きました。 あと、質問の記述に誤りがありました。 K列にaの数 L列にbの数 を求める場合の質問でした。 申し訳ありませんでした。 職場で使う書類を作り替える為にVB勉強中です。 どうか、ご教授お願いします。

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.1

たとえば以下のような感じでいかがでしょう。 Sub Example() Dim c As Range Dim i As Integer, j As Integer Range("K:K").ClearContents For i = 0 To 1 For Each c In Range(Cells(i + 1, "A"), Cells(i + 1, "J")) Cells(i + 1, "K").Value = Cells(i + 1, "K").Value + (Len(c.Value) - Len(Replace(c.Value, Chr(Asc("a") + i), ""))) Next Next End Sub

akiyes
質問者

お礼

kkkkkmさん早速、ありがとうございます。 まだ試してないのですが、私の質問が不十分ですいませんでした。 行は10行くらで、 列は10列くらいなので、J1としました。 関数だとK1に =COUNTIF(A1:J1,"a")となるのでしょうか。 それをタテ10行、横10列でVBならと思いやってみたんですが、私には難しく質問させて頂きました。 "a"は実際は日本語で簡単な略語なんですが、aとさせて頂きました。 あと、質問の記述に誤りがありました。 K列にaの数 L列にbの数 を求める場合の質問でした。 申し訳ありませんでした。 職場で使う書類を作り替える為にVB勉強中です。 どうか、ご教授お願いします。

関連するQ&A

  • 指定文字の同じ行2列、3列目の文字入力の個数

    B列3~12行に文字が入力されており指定文字Bの行の2列目に文字が入力されていればその個数をC14にまた3列目に文字入力個数5個をD14に入力したいのですがどなたか関数が解る方宜しくお願いします。Excel2013です。

  • セル内にある文字の個数を知りたい

    エクセル2002を使用してますが、セル内にある文字の個数を知りたいとき、どのような関数を使えばいいのでしょうか? たとえば、A1に「ABCAABACABAC」 という文字列があった場合、Aの個数を知りたいのです。 このとき結果をB1で表示させるにはどうすればいいのでしょうか? よろしくお願いします。

  • 列にセル値と同じ文字があればその行の個数を返す

    セルM5に=IF(L5="","",SUMPRODUCT(($A$5:$A$11=L5)*MONTH($B$5:$E$11)=M$3)))を入力した結果指定範囲の個数2を示しM11まで順に12月のセル数を返しますが、N5セルに 同じようにIF(L5="","",SUMPRODUCT(($F$5:$F$11=L5)*MONTH($G$5:$J$11)=N$3)))を入力した場合なぜか1月の範囲内個数2ではなく空白を含めた全セル数4を返し以降も同じよう返します。他の月では問題ないのですが1月だけなぜか指定月の個数が帰りませんどなたか関数の解る方宜しくお願いします。

  • エクセルでINDEX+MATCH関数について

    INDEX+MATCH関数について B1:D7、F1:H7には次のようなデータが入力されていて J1:M3のようなものを作成したいのですが上手くいきません。 J2にコード番号を入力し、品名を表示させ、数を入力し、価格を表示させる ・・・ということをしたいのですが、上手くいきません。 K2には  =INDEX((C2:D7,G2:H7),MATCH(J2,B2:B7,0),1,LEFT(J2,1)) という関数が入っていて K2にはりんご M2には500  と表示され上手くいきます。 コード番号100番台は上手くいくのですが、200番台になると#N/Aとエラー表記になります。 どこをどう修正すれば上手くいくのでしょうか。 教えてください。

  • 文字列の個数

    Microsoft Excel2002(XP)で質問ですが、ある範囲の中からA列が☆かつC列が▲の個数を表示させるような関数ってありますか?

  • 入力されているセルの個数を数えるには?

    エクセル2003で表を作成しました。指定した文字を含むセル以外で、入力されているセルの個数を数えるにはどの関数を使えばいいでしょうか?   A   B   C  D   E   F   G 1   アい 2 3     フて   イろ 4 5     エじ 「ア」を含むセル以外で、文字が入力されているセルの個数は?

  • セル内の同一文字の個数を測定

    セル内にある同一文字の個数を測定したいのですが 有効な関数はないでしょうか? たとえば・・・ A1セル内に”あいうあいうあい”となっていた場合、 ”あ”の数(結果=3)を出力したいのですが、 どういった関数を使えばよいのでしょうか?

  • 同列に文字入力があるまで隣列の個数を合計

    excelシートに以下のような表があり別表に下記項目に基づき合計値を入力したい。 1. I3セルにD列項目「あ」のうちB列記号「A+B+C」のF列個数合計を入力 2. J3セルにはD列項目「あ」のうちB列記号「D」のF列個数合計を入力 3. I4セルにD列項目「い」のうちB列記号「A+B+C」のF列個数合計を入力 4. J4セルにはD列項目「い」のうちB列記号「D+E」のF列個数合計を入力 以下続くのですが関数もしくはVBAコードが解る方宜しくお願いします。

  • 行の指定文字と同じ列にある指定数値合致で合計個数

    2行目のD列●印の列にある3行目指定数値が1の場合1個とし2行目の●印すべての同列にある3行目の指定数値が1の合計個数2をセルK3に入力したい。4~5行目も同じようにK4~K6に入力したいのですが関数の解る方宜しくお願いします。環境はExcel2013です。

  • 列に指定文字が合えば合計値を入力

    Excel2013使用で簡略に作成したのですが集計表の文字Aの1、セルC15にリスト表Aの○合計個数2を入力したい、集計表文字A、B、Cそれぞれの行にリスト表○文字合計数を入力したいのですがセルに入れる関数をお解りの方宜しくお願いします。

専門家に質問してみよう