我正在使用VBA并从数据库获取数据。但是,有时数据缺少一个值。因此,我想知道它何时缺少一个值。使用变量数组检查列中的值
我以为我有一个聪明的想法,我可以将每列定义为自己的范围。然后创建这些列名称的数组,循环遍历它,然后循环遍历范围内的每个单元格,然后如果单元格为空,则取周围单元格的平均值。但是,它似乎并没有像我正确定义我的“范围变量”,即我在第一遍循环中使用的变量。 VBA说它是“没有”。
Dim csheet as Worksheet
Set csheet =ThisWorkbook.Sheets(“Sheet1”)
Dim name1, name2, name3, name4, name5, name6, name7, name8 As Range
Set name1 = csheet.Range("B4", "B25")
Set name2 = csheet.Range("C4", "C25")
Set name3= csheet.Range("D4", "D25")
Set name4= csheet.Range("E4", "E25")
Set name5= csheet.Range("F4", "F25")
Set name6= csheet.Range("G4", "G25")
Set name7= csheet.Range("H4", "H25")
Set name8 = csheet.Range("I4", "I25")
Dim data() As Variant
data = Array(name1, name2, name3, name4, name5, name6, name7, name8)
Dim currentRange As Range
For k = 1 To UBound(data)
currentRange = data(k)
For Each cell In currentRange
If IsEmpty(cell.Value) = True Then
cell.Value = Application.WorksheetFunction.Average(cell.Offset(1, 0).Value, cell.Offset(-1, 0).Value)
If IsError(cell.Value) = True Then
cell.Value = cell.Offset(-1, 0)
ElseIf IsError(cell.Value) = True Then
cell.Value = cell.Offset(1, 0)
ElseIf IsError(cell.Value) = True Then
cell.Value = 0
MsgBox ("There is an error with the data. Please fix once done running. Thank you.")
End If
End If
Next cell
Next