Vba 尝试计算平均值时出现visual basic错误

Vba 尝试计算平均值时出现visual basic错误,vba,runtime-error,Vba,Runtime Error,我试图创建一个宏,该宏同时收集平面计数和工作表中现有值的平均值。在我试图计算avgScore变量的那一行,我得到了一个错误,我将求和的vulnScore除以计数器值。我在“avgScore=vulnScore/counter”行收到一个“runtime 6错误”。它使用的数据集有77行长。我曾尝试将变量转换为Long(这是我发现的唯一真正的建议),但没有成功。“element”变量用于包含字符串变量的大小约为26的数组 Dim counter As Long Dim vulnScore As L

我试图创建一个宏,该宏同时收集平面计数和工作表中现有值的平均值。在我试图计算avgScore变量的那一行,我得到了一个错误,我将求和的vulnScore除以计数器值。我在“avgScore=vulnScore/counter”行收到一个“runtime 6错误”。它使用的数据集有77行长。我曾尝试将变量转换为Long(这是我发现的唯一真正的建议),但没有成功。“element”变量用于包含字符串变量的大小约为26的数组

Dim counter As Long
Dim vulnScore As Long
Dim avgScore As Long
vulnScore = 0
counter = 0
avgScore = 0

Dim rowNum As Integer
''''''''''''''''''''
For Each element In arr
vulnScore = 0
counter = 0
avgScore = 0
'get #'s for putting into Treg
'''''''''
For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 3).Value = element Then
'# of times that server is listed
counter = counter + 1
'combining vulnerability scores for that server
vulnScore = vulnScore + Cells(i, 7).Value
End If
Next i
avgScore = vulnScore / counter
'''''''''

'find Treg column/row
colNum = WorksheetFunction.Match("Findings Variance (4/15 vs Current)", ActiveWorkbook.TREG.Range("1:1"), 0)
rowNum = WorksheetFunction.Match(element, ActiveWorkbook.TREG.Range("1:1"), 0)
Cells(rowNum, colNum - 1).Value = avgScore
Cells(rowNum, colNum - 2).Value = counter
'''''''''
Next element
示例:它从该工作表中提取数据,当宏运行时,该工作表将是活动工作表

示例:它将数据粘贴到此工作表(TREG)的两个空白列中 尝试添加以下代码:

debug.print(“Vulnscore:&Vulnscore&&Counter:&Counter&&avgScore:&Vulnscore/Counter)

就在你排队之前

avgScore = vulnScore / counter

看看get打印的内容

你在对NautMeg回答的评论中说,当这两个变量发生时,它们都是0。这已经给了你一半的答案:如果
计数器
为0,你将得到一个被零除的错误(运行时错误11)。除0除以0外,在这种情况下,VBA不会抛出除以0的错误,它将抛出溢出错误(运行时错误6)

您可以通过打开即时窗口(Ctrl+G)并输入:

? 1/0
-->运行时错误11

? 0/0
-->运行时错误6

在任何情况下,你都必须决定你想在工作表上看到什么。也许把你的代码改成

colNum = WorksheetFunction.Match("Findings Variance (4/15 vs Current)", ActiveWorkbook.TREG.Range("1:1"), 0)
rowNum = WorksheetFunction.Match(element, ActiveWorkbook.TREG.Range("1:1"), 0)
if counter > 0 then 
    avgScore = vulnScore / counter        
    Cells(rowNum, colNum - 1).Value = avgScore
Else
    Cells(rowNum, colNum - 1).Value = ""
End IF
Cells(rowNum, colNum - 2).Value = counter

你能分享excel表格样本吗?完成。添加了一些示例屏幕快照,在输出调试语句之前抛出错误。我试着把它放在你建议的地方,在“next i”之前,在“end if”之前,在for循环之前。似乎当它进入其中一个变量时,它会出于某种原因抛出错误,所以在您在:avgScore=vulnScore/counter上获取错误之前-但是现在您甚至无法进入:for i=。。。循环而不出错?我做了各种打印检查。它正确地遍历for循环中的“i”变量,数组就正确地填充了。问题是,每当我试图让它打印出for循环中的vulnScore或counter时,我不会得到任何实际打印,它会直接返回错误消息。如果我在循环'lastRow'之后打印出这两个变量,两个变量的返回值都是0。这似乎是(至少部分)计数器和vulnScore在循环中没有实际获得任何添加到它们的值的问题