我希望创建一个宏,它总结一个总是包含几个#N / A值的列,列中的单元格数量每天都会改变,#N / A值的位置也会改变。< / p>
我还想将结果放在最后一个值下面的第一个空单元格中,即列底部的第一个空单元格。
这是我能得到的:
Option Explicit
Sub Total()
'
' Total Macro
Dim rg As Range
Dim Cell As Range, Target As Range
Set Target = Range("D65536").End(xlUp)
For Each Cell In Target
Cell.Errors(xlEvaluateToError).Ignore = True
Set rg = Range("D65536").End(xlUp)
rg.Offset(1, 0).Value = "=sumif(D1:D100 " <> 0 & rg.Row & ")"
Range("D65536").End(xlUp).Select
Selection.Font.Bold = True
Next
End Sub
我使用D1:D100,但仅仅因为100将覆盖我的列中的单元格数量。这给了一个奇怪的结果,更多的是#N / As,然后是一个True。我不认为我应该尝试在代码中使用公式。
由于
答案 0 :(得分:3)
我会循环检查该值是否为数字,然后将其添加到总数中:
Sub mysum()
Dim lstRow As Long
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("Sheet5") 'Change to your sheet
With ws
lstRow = .Cells(.Rows.Count, 4).End(xlUp).Row
For i = 1 To lstRow
If IsNumeric(.Cells(i, 4)) Then
.Cells(lstRow + 1, 4) = .Cells(lstRow + 1, 4) + .Cells(i, 4)
End If
Next i
End With
End Sub
答案 1 :(得分:0)
您可以使用SpecialCells():
Sub total()
With Worksheets("SheetName") '<--| Change to your actual sheet name
With .Range("D1", .Cells(.Rows.Count, 4).End(xlUp))
.Cells(.Rows.Count,1).Offset(1).Value = WorksheetFunction.Sum(.SpecialCells(xlCellTypeConstants, xlNumbers))
End With
End With
End Sub