汇总Excel VBA中一行中特定字母的数量

时间:2014-07-08 16:57:29

标签: excel excel-vba vba

我没有任何代码,因为我不知道该怎么做,但我想要做的是找到特定行中有多少个字母,并将这个数字放入同一行中的不同单元格。

也许这有助于解释,我做的第一件事就是取一串字母并将其分解,以便每个字母从那里放入自己的单元格中,我需要找到一个字母多少次,例如。 " A",发生并将它放入自己的单元格中。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是一个应用于第4行的方法:

enter image description here

<强>解释

  • 一行中的字符总数(例如第4行):=SUMPRODUCT(LEN(4:4))
  • NOT &#34; a&#34;的总数该行中的字符:=SUMPRODUCT(LEN(SUBSTITUTE(4:4,"a","")))
  • NOT &#34; A&#34;的总数该行中的字符:=SUMPRODUCT(LEN(SUBSTITUTE(4:4,"A","")))
  • &#34; a&#34; +&#34; A&#34;字符:2*SUMPRODUCT(LEN(4:4)) - SUMPRODUCT(LEN(SUBSTITUTE(4:4,"a",""))) -SUMPRODUCT(LEN(SUBSTITUTE(4:4,"A","")))

有必要减去&#34; A&#34;和&#34; a&#34;因为SUBSTITUTE区分大小写。如果我们需要计算区分大小写的字母(例如a),则公式更简单:

SUMPRODUCT(LEN(4:4)) - SUMPRODUCT(LEN(SUBSTITUTE(4:4,"a","")))

唯一需要注意的是,这个公式不能放在第4行,因为会出现循环引用。

修改

Uuuups,只是注意到它应该是VBA

Option Explicit

Function noOfChars(myChar As String, lRow As Long) As Long
  ' Needs extra error handling, better to return a Variant 
  Dim sChars As String, vChar As Variant
  With Application
    vChar = .Transpose(.Transpose(Range(lRow & ":" & lRow).Value2))
  End With

  sChars = Join(vChar) ' <-- Needs error handling
  noOfChars = Len(sChars) - Len(Replace(sChars, myChar, vbNullString, _ 
     compare:=vbTextCompare)) ' <-- Needs error handling

End Function

我希望这有帮助!