gpt4 book ai didi

Excel VBA 在进行大量计算时返回奇怪的结果

转载 作者:行者123 更新时间:2023-12-02 23:26:48 24 4
gpt4 key购买 nike

我在 Excel 中创建了一个函数,它基本上在 For 语句中的动态范围中搜索字符串,并返回一列单元格的值。它基本上是一个预算功能,但这不是重点。

问题是,一切都可以在较小的结果下运行,但是当结果变得太大时(比如 32000 左右......由于某种原因,这似乎是数字)函数开始返回 0

有人遇到过这样的问题吗?

这是有问题的代码:

Function Material(item As String, Optional sheetType As String) As Integer

Dim wSheet As Worksheetr
Dim count As Integer
Dim offSet As Integer
Dim ref As Integer
Dim bottomRight As Integer
Dim upperLeft As Integer
Dim rng As Range
Dim cVal As Integer

For Each wSheet In Worksheets
If wSheet.Name = "Drywall Pricing" Then
dwIndex = wSheet.Index - 1
End If
Next wSheet

If IsMissing(sheetType) Then
sheetType = " "
Else
sheetType = UCase(sheetType)
End If
For i = 1 To dwIndex
wSheetName = Sheets(i).Name
If InStr(UCase(wSheetName), sheetType) > 0 Then
count = 9
offSet = 44
ref = 27
For wall = 0 To count - 1
On Error Resume Next
Err.Clear
upperLeft = (ref + 12) + (offSet * wall)
bottomRight = (ref + 30) + (offSet * wall)
Set rng = Sheets(i).Range("A" & upperLeft & ":B" & bottomRight)
cVal = Application.WorksheetFunction.VLookup(item, rng, 2, False)
If Err.Number > 0 Then
cVal = 0
End If
units = units + cVal
Next wall
Else
units = units + 0
End If
Next i

If units > 0 Then
Material = units
Else
Material = 0
End If

End Function

我设置了一个电子表格来手动计算一定数量的项目(即“=A13+B5+B26”等),并将其与运行相关函数的结果进行比较,以及当结果较低时,它们彼此相等,所以我知道函数本身工作正常。那么这是内存问题吗?

任何帮助将不胜感激。

提前致谢!

最佳答案

VBA 中的整数为 16 位,这意味着最大值为 32,767(最小值为 -32,768)。

使用 Long 来存储结果,而不是 Integer,这会在达到限制之前为您提供超过 20 亿的值。

关于Excel VBA 在进行大量计算时返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446723/

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