Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8541 / 13646 ツリー ←次へ | 前へ→

【32630】VBAで同一セル内に同じ文字がいくつ存在するかを調べたい まこと 05/12/20(火) 9:19 質問[未読]
【32633】Re:VBAで同一セル内に同じ文字がいくつ存在... Blue 05/12/20(火) 9:24 発言[未読]
【32635】Re:VBAで同一セル内に同じ文字がいくつ存在... だるま 05/12/20(火) 9:30 回答[未読]
【32637】Re:VBAで同一セル内に同じ文字がいくつ存在... Blue 05/12/20(火) 9:39 発言[未読]
【32692】Re:VBAで同一セル内に同じ文字がいくつ存在... [名前なし] 05/12/20(火) 21:47 発言[未読]
【32707】Re:VBAで同一セル内に同じ文字がいくつ存在... ichinose 05/12/21(水) 8:09 発言[未読]
【32712】Re:VBAで同一セル内に同じ文字がいくつ存在... Jaka 05/12/21(水) 9:47 発言[未読]
【32693】Re:VBAで同一セル内に同じ文字がいくつ存在... Kein 05/12/20(火) 22:27 回答[未読]

【32630】VBAで同一セル内に同じ文字がいくつ存在...
質問  まこと  - 05/12/20(火) 9:19 -

引用なし
パスワード
   VBAで同一セル内に同じ文字がいくつ存在するかを調べたいのですが、
どのようにすればいいのかご教示頂けないでしょうか?

例えばA1のセルに 田中、加藤、金子、田中、本山、田中
がある場合、田中の文字が3つ存在しているという事が知りたいのです。

【32633】Re:VBAで同一セル内に同じ文字がいくつ存...
発言  Blue  - 05/12/20(火) 9:24 -

引用なし
パスワード
   ▼まこと さん:
>例えばA1のセルに 田中、加藤、金子、田中、本山、田中
>がある場合、田中の文字が3つ存在しているという事が知りたいのです。
必ず"、"で区切ることは保障されているのでしょうか?
保障されるのであれば、一番楽チンなのは Split 関数で文字列配列にしてから、
その配列の先頭から1つ1つみていくような感じでしょうか。

それでなければ、文字列を1文字1文字みてくか、
InStr関数でうまいことやるのかな。

【32635】Re:VBAで同一セル内に同じ文字がいくつ存...
回答  だるま WEB  - 05/12/20(火) 9:30 -

引用なし
パスワード
   Splitだけで良いのでは。^d^

Sub test()
  Const S As String = "田中、加藤、金子、田中、本山、田中"
  MsgBox UBound(Split(S, "田中"))
End Sub

【32637】Re:VBAで同一セル内に同じ文字がいくつ存...
発言  Blue  - 05/12/20(火) 9:39 -

引用なし
パスワード
   ▼だるま さん:
>Splitだけで良いのでは。^d^
一応、"田中田" みたいなのはマッチしないことにしとくという意味で。
(というか思いつかなかっただけですけど(^-^;))

【32692】Re:VBAで同一セル内に同じ文字がいくつ存...
発言  [名前なし]  - 05/12/20(火) 21:47 -

引用なし
パスワード
   ▼Blue さん:
>一応、"田中田" みたいなのはマッチしないことにしとくという意味で。
>(というか思いつかなかっただけですけど(^-^;))

たぶん、以下のような場合は問題になるということですね。

Sub Macro1()
  Const S As String = "森島、森田、森、森川、森本、森、藤森、森、森山"
  MsgBox UBound(Split(S, "森"))
End Sub

レアケースかもしれませんが。

【32693】Re:VBAで同一セル内に同じ文字がいくつ存...
回答  Kein  - 05/12/20(火) 22:27 -

引用なし
パスワード
   Sub Nm_Count()
  Dim Ary1 As Variant, Ary2 As Variant
  Dim Ary3() As String
  Dim i As Integer, j As Integer
 
  Ary1 = Split(Range("A1").Value, Chr(164))
  ReDim Ary3(j): Ary3(j) = ""
  For i = LBound(Ary1) To UBound(Ary1)
   If IsError(Application.Match(Ary1(i), Ary3, 0)) Then
     Ary2 = Filter(Ary1, Ary1(i), True)
     MsgBox Ary1(i) & " の個数は " & UBound(Ary2) + 1 & "個"
     Erase Ary2: j = j + 1
     ReDim Preserve Ary3(j): Ary3(j) = Ary1(i)
   End If
  Next i
  Erase Ary1, Ary3
End Sub

で、どうでしょーか ?

【32707】Re:VBAで同一セル内に同じ文字がいくつ存...
発言  ichinose  - 05/12/21(水) 8:09 -

引用なし
パスワード
   おはようございます。
>>一応、"田中田" みたいなのはマッチしないことにしとくという意味で。
>>(というか思いつかなかっただけですけど(^-^;))
>
>たぶん、以下のような場合は問題になるということですね。
>
>Sub Macro1()
>  Const S As String = "森島、森田、森、森川、森本、森、藤森、森、森山"
>  MsgBox UBound(Split(S, "森"))
>End Sub
>
>レアケースかもしれませんが。
なるほど・・・。でも、
>VBAで同一セル内に同じ文字がいくつ存在するかを調べたいのですが、
>どのようにすればいいのかご教示頂けないでしょうか?
まことさんの投稿だけ見ると「同じ文字」の数となっていますよね?
名前とは言っていませんね・・。
「文字」なら、だるまさんのコードで良いと思いますし、
名前なら、区切り文字の特定が必要ですね!!
さて、まことさんの真意はどっちでしょうか?

【32712】Re:VBAで同一セル内に同じ文字がいくつ存...
発言  Jaka  - 05/12/21(水) 9:47 -

引用なし
パスワード
   こんにちは。
こういうことなんでしょうかね?
エクセル関数でも出来るけど無理やりマクロに....。
半角カタカナの濁音、半濁音のガ、パなどの2バイト文字?は、1文字として数えています。
これ、どっかでかいたけど...。

st = "田中、加藤、金子、田中、本山、田中"
sa = "田中"
stw = StrConv(st, vbWide)
saw = StrConv(sa, vbWide)
MsgBox (Len(stw) - Len(Application.Substitute(stw, saw, ""))) / Len(saw)

8541 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free