我正在使用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