こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

変数の中に指定した値が何回登場するかを取得したい

変数の中に指定した値が何回登場するかを取得したいのですが
どうやら、WorksheetFunction.CountIfは使えないようです。

Sub tset()
Dim mystr As String
Dim i As Integer

mystr = "abcabc"
i = WorksheetFunction.CountIf(mystr, "*a*")

End Sub

とすると、
コンパイルエラーが発生します。

ヘルプを見ると「セルの個数を求めるセル範囲を指定します。」と書いてあることから、変数は指定できないのだと思いますが
では、変数の中に指定した値が何回登場するかを取得する場合は、どのようなコードを作成すればいいのでしょうか?

上記の例であれば、
2が返ってきてほしいです。

投稿日時 - 2015-03-28 17:13:29

QNo.8944560

暇なときに回答ください

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

少しアップデート

=SUMPLODUCT((RIGHT("abcabc",ROW(Offset(A1,0,0,LEN("abcabc"),1))="a*")+0)

変えてみました

Function 語数(ByVal 語 As Stling ,ByVal キー As Stling) As Long
 キー = キー + "*"
 語数 = Evaluate("SUMPLODUCT((RIGHT("語",ROW(Offset(A1,0,0,LEN("語"),1))="キー")+0)"
End Function

機能しますかね?

投稿日時 - 2015-03-29 16:32:16

お礼

どうもありがとうございました。

投稿日時 - 2015-04-08 21:34:17

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

本来は違うのでしょう


任意の文字列中に任意1文字が何個存在するか
此を調べる場合
=sumproduct((mid("abcabc",row(indirect("A1:A"&len("abcabc"))="a")-0)
此で出来た筈です

なので
Const 文字 = "abcabc" Az String
Const キー = "a"    Az String
Const はて = "A1:A"  Az String
Dim XXX Az Long
 XXX = Evaluate("sumproduct((mid("文字",row(indirect("はて"&len("文字"))="キー")-0)
此で如何かと

投稿日時 - 2015-03-28 20:54:59

お礼

どうもありがとうございました。

投稿日時 - 2015-04-08 21:34:19

ANo.3

>セル範囲を指定します。

なら、どこかのセルにその変数を書き込んでそのセルを指定すれば?
そのセルは使えないこととあとで消す事を忘れずに。
心配ならそのセルを変数に入れておいて戻す手もありますが。

投稿日時 - 2015-03-28 18:40:21

お礼

どうもありがとうございました。

投稿日時 - 2015-04-08 21:34:22

ANo.2

2という答えが欲しいなら

Sub tset()
Dim mystr As String
Dim i As Integer

mystr = "abcabc"
i = Len(mystr) - Len(Replace(mystr, "a", ""))

End Sub

投稿日時 - 2015-03-28 17:42:53

お礼

どうもありがとうございました。

投稿日時 - 2015-04-08 21:34:24

使った事無いんですが、

”*a*” でなくて 'a' とか、chr$(61)なら理解できます(61で良いのか?)

投稿日時 - 2015-03-28 17:25:51

お礼

どうもありがとうございました。

投稿日時 - 2015-04-08 21:34:26

あなたにオススメの質問