Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA中一行内特定字母的总和_Excel_Vba - Fatal编程技术网

Excel VBA中一行内特定字母的总和

Excel VBA中一行内特定字母的总和,excel,vba,Excel,Vba,我没有这方面的代码,因为我不知道怎么做,但我想做的是找出一行中有多少个字母,然后把这个数字放在同一行的不同单元格中 也许这会有助于解释,我要做的第一件事是把一串字母分解,然后把每个字母放在自己的单元格中,从那里我需要找到一个字母,例如“a”,出现了多少次,然后让它把这个数字放在自己的单元格中 提前感谢您的帮助 以下是一种适用于第4行的方法: 解释 一行中的字符总数(例如第4行):=SUMPRODUCT(LEN(4:4)) 该行中非“a”字符的总数:=SUMPRODUCT(LEN(替换为(4:

我没有这方面的代码,因为我不知道怎么做,但我想做的是找出一行中有多少个字母,然后把这个数字放在同一行的不同单元格中

也许这会有助于解释,我要做的第一件事是把一串字母分解,然后把每个字母放在自己的单元格中,从那里我需要找到一个字母,例如“a”,出现了多少次,然后让它把这个数字放在自己的单元格中


提前感谢您的帮助

以下是一种适用于第4行的方法:

解释

  • 一行中的字符总数(例如第4行):
    =SUMPRODUCT(LEN(4:4))
  • 该行中非“a”字符的总数:
    =SUMPRODUCT(LEN(替换为(4:4,“a”),”)
  • 该行中非“A”字符的总数:
    =SUMPRODUCT(LEN(替换为(4:4,“A”),”)
  • “a”+“a”字符数:
    2*SUMPRODUCT(LEN(4:4))-SUMPRODUCT(LEN(替换)(4:4,“a”,“”))-SUMPRODUCT(LEN(替换)(4:4,“a”,“”))
必须同时减去“A”和“A”,因为
SUBSTITUTE
区分大小写。如果我们需要计算区分大小写的字母(例如
a
),那么公式更简单:

SUMPRODUCT(LEN(4:4))-SUMPRODUCT(LEN(替换)(4:4,“a”和“”))

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

编辑

UUUPS,刚刚注意到它应该是
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
选项显式
函数noOfChars(myChar作为字符串,lRow作为Long)作为Long
'需要额外的错误处理,最好返回一个变量
Dim sChars作为字符串,vChar作为变体
应用
vChar=.Transpose(.Transpose(范围(lRow&“:”&lRow.Value2))
以

sChars=Join(vChar)'这是我需要的,但当我把它放入宏中时,它似乎不起作用。Sheets(“Peaks Net charg Calc”)。Range(“B1”)=“=COUNTIF(G1:CZ1,“a”)”这是我在VBA中尝试使用的,但它一直给我一个超出范围的错误。我想它需要在某处引用,但我似乎无法理解。请尝试
表格(“峰值净费用计算”)。范围(“B1”)=[COUNTIF(G1:CZ1,“A”)]
。顺便说一句,这不会计算您在该范围内的所有
A
s。。它计算单元格字符串,而不是单元格字符串中的字符。我试过了,但它给了我一个错误“找不到指定名称的项目”,你知道这意味着什么吗?哇,我现在感觉非常聪明。从以前的代码中复制后,我忘了更改它。谢谢哈哈,欢迎你!看一看,下次会有用的!