+
我正在尝试在 Excel 中单个单元格内的公式中找出 的数量。
如果它是一个包含文本的普通单元格,这将非常容易。但由于我正在处理的文件的限制,我需要保持单元格的格式不变。
简而言之:
- 细胞
A1
:=123,12+234,45+790,44
- 单元格
A2
:=2
,因为在单元格 A1 中发现两个 +
答案1
您可以使用自定义 vba 函数(将此代码放入模块中):
Option Explicit
Function countChar(cell As Range, pattern As String)
countChar = UBound(Split(cell.Formula, pattern))
End Function
然后在工作表中使用此函数:
=countChar(A1;"+")
答案2
虚拟专用网络
使用此代码创建一个函数:
Function GETFORMULA(c As Range) As String
If c.HasArray Then
GETFORMULA = "{" & c.Formula & "}"
ElseIf VarType(c) = vbString And Not c.HasFormula Then
GETFORMULA = c.Value
Else
GETFORMULA = c.Formula
End If
End Function
ff.公式将显示其中“+”出现的次数。
=LEN(GETFORMULA(cell))-LEN(SUBSTITUTE(GETFORMULA(cell),"+",""))
非 VBA
突出显示包含公式的单元格。如果您只需要处理一个单元格,只需'
在之前添加一个=
,然后跳过下一步。
按Ctrl+ H。=
输入找什么并'=
进入用。。。来代替。这会将公式转换为文本。
在空白单元格中使用此公式来计算“+”出现的次数。
=LEN(cell)-LEN(SUBSTITUTE(cell,"+",""))
要将单元格恢复到原来的状态,请突出显示它们,按Ctrl+H并替换'=
为=
。这样做会导致上面的公式显示 0。
答案3
此函数将获取传递给它的单元格的公式(即您在=NumPlus(A1)
工作表上调用它)并沿着它计算加号。您可以稍微修改它以将要计算的字符作为参数。
Option Explicit
Function NumPlus(cel As Variant) As Variant
Dim formstr As String
Dim i As Integer
NumPlus = 0
formstr = cel.Formula
For i = 1 To Len(formstr)
If Mid(formstr, i, 1) = "+" Then
NumPlus = NumPlus + 1
End If
Next i
End Function