我创建了一些宏来分析来自机场的降雨数据。当我在每个单元格中手动键入宏时,它们可以正常工作。
当我在各列下复制宏时,新行正确地填充了宏公式和引用单元格。但是,显示并设置为该单元格值的是我从其向下复制公式的第一个单元格中的值。
例如,C5的公式为:“ = twoday(B5)”,其值为0.2。向下复制时,我希望C6,C7等显示“ = twoday(B6)”,“ = twoday(B7)”等。而且,它们可以显示,但它们也显示值0.2,但应显示不同的值值。当我单击该单元格,然后在公式栏上单击Enter,它会正确显示我想要的值。
如何不按Enter进入4000个单元格,而是如何正确地将宏向下复制到列中?我试过检查自动/手动(并使用F9)的计算设置,但均无济于事。我还能尝试什么吗?
代码如下:
Public Function twoday(rain_current_day)
'Allow x to be the range of cells that we check for the rain data
'Offset = row, column
Dim x As Range
Set x = Range(ActiveCell.Offset(-1, -1), ActiveCell.Offset(, -1)) 'adjacent
cell (left) and 1 cell up (2 data points total)
'find out if any of the important rows are blank or text data
If IsNumeric(x.Cells(1, 1)) And Not IsEmpty(x.Cells(1, 1)) Then
twoday = WorksheetFunction.Sum(x)
Else
twoday = ""
End If
End Function
答案 0 :(得分:1)
主要问题是您的函数并未真正接受输入。因此,您的输出与您选择要放入公式的单元格无关。
请尝试以下功能。请注意,此功能由您提供的输入驱动。无论您将什么单元格放入公式中,它始终会将输入单元格及其上方的单元格相加。
Public Function TWODAY(Target As Range) As Double
TWODAY = Target + Target.Offset(-1)
End Function