gpt4 book ai didi

vba - 在 Excel/宏中将字符串转换为 double

转载 作者:行者123 更新时间:2023-12-04 21:08:54 33 4
gpt4 key购买 nike

我尝试在 Excel 中创建新函数,女巫将计算给定值(类似于 SUM 函数,但仅具有给定前缀)。

  A
---------
1|AA30
2|AA10
3|BC446
4|AA10

// result will be 50 on SUM_PREFIX(A1:A4;"AA")

问题是,当值采用 AA10,434 或 AA4.43 等形式时。谁能帮我解决我的问题?这是我在 VB 中的第一次脱衣舞。
 Function SUM_PREFIX(Data As Range, prefix As String) As Double

Dim result As Double
Dim strVal As String
Dim i As Integer
Dim objRegExp As Object

Set objRegExp = CreateObject("vbscript.regexp")
With objRegExp
.IgnoreCase = True
.MultiLine = False
.Pattern = "^[" + prefix + "]+[0-9]+(\,|\.)?[0-9]?$"
.Global = True
End With

For i = 1 To Data.Rows.Count
Debug.Print Data.Cells(i, 1)
If objRegExp.Test(Data.Cells(i, 1)) = True Then
strVal = Replace(Data.Cells(i, 1), prefix, "")
Debug.Print strVal
strVal = Trim(Replace(strVal, ",", "."))
Debug.Print strVal
result = result + CDbl(strVal)
End If
Next i

SUM_PREFIX = result
End Function

感谢帮助。

最佳答案

CDbl是地区感知的,所以检查你的Replace是正确的(例如,在我的语言环境中,我必须将“。”替换为“,”才能使其工作)。
如果您不想依赖区域感知代码,请使用 Val而不是 CDbl因为Val只识别“.”作为有效的小数分隔符,无论语言环境如何。

关于vba - 在 Excel/宏中将字符串转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063887/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com