Excel - 自动填充(复制)复制公式但显示原始值

问题描述 投票:-2回答:1

我创建了一些宏来分析机场的雨量数据。当我手动将它们键入每个单元格时,宏工作正常。

当我将宏复制到列中时,新行正确填充宏公式和引用单元格。但是,显示并设置为单元格值的是从我复制公式的第一个单元格中的值。

例如,C5具有公式:“= twoday(B5)”并且具有值0.2。当被复制下来时,我希望C6,C7等显示“= twoday(B6)”,“= twoday(B7)”等。而且,他们这样做,但他们也显示值0.2,但应该显示不同值。当我单击单元格然后单击公式栏并按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
excel vba copy autofill
1个回答
1
投票

主要问题是你的功能并没有真正接受输入。因此,您的输出与您选择放入公式中的单元格无关。


尝试使用类似下面的功能。请注意,此功能由您提供的输入驱动。无论你在公式中放入什么单元格,它总是将输入单元格和它上面的单元格相加。

Public Function TWODAY(Target As Range) As Double

    TWODAY = Target + Target.Offset(-1)

End Function
© www.soinside.com 2019 - 2024. All rights reserved.