にしている誰もが、細胞からVBAで単語の数を返す方法についてアドバイスで私を助けてもらえますか?リターンはどのように多くの単語がセル
Excelの場合、私はC2=LEN(B2)-LEN(SUBSTITUTE(B2," ",""))+1
を使用しますが、VBAでは "SUBSTITUTE
"という機能はもう動作しません。スペース文字に
にしている誰もが、細胞からVBAで単語の数を返す方法についてアドバイスで私を助けてもらえますか?リターンはどのように多くの単語がセル
Excelの場合、私はC2=LEN(B2)-LEN(SUBSTITUTE(B2," ",""))+1
を使用しますが、VBAでは "SUBSTITUTE
"という機能はもう動作しません。スペース文字に
スプリットとは、結果の配列の上限を取得します。
dim numchars as long
numchars = ubound(split(range("b2").value2, chr(32)))+1
debug.print numchars
1が追加されます.VBA配列の既定の開始値(lbound)はゼロです。
ところで、ワークシートSUBSTITUTE関数のVBAと同等の置き換えです。
なぜ 'Value'ではなく' Value2'ですか? –
'Value2'は無関係な情報(日付、通貨など)を持っていないとわずかに速く取り出されます。もしあなたがこれらの百万をしたことに気付くかもしれません。 – Jeeped
.................ありがとう!................. –
Regexp
オプションは、有効な単語だけが返されるようにし、起動する空白の問題を無視します。
Function NumWords(strIn As String) As Long
Dim objRegex As Object
Dim objRegMC As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "\b[a-z]+\b"
.Global = True
If .test(LCase$(strIn)) Then
Set objRegMC = .Execute(strIn)
NumWords = objRegMC.Count
Else
NumWords = 0
End If
End With
End Function
この式は、セルが空ではなく、単語間に複数の空白が含まれていないと仮定して動作します。 – Comintern