我对这个公式还不太了解(但比上次更好;)How to add a Dollar $ sign to a complex formula?),并对其进行了编辑以在其他地方使用它...
我的问题很简单,我采用完全相同的公式,但是根据我在“ with”中的书写方式,它不会给出相同的结果:(
我的目标是制作一个很好的“ with”,在单元格中插入公式,还要格式化单元格(颜色等)
我有两种写法:
第一个给了我我想要的结果:=AVERAGE('C Labour Rate'!c6:g6)
第二个给出:=AVERAGE('C Labour Rate'!E9:I9)
With Worksheets(YearToFill)
.Cells(PosStartLine + (TPINb * 3) - 3, PosStartColumn + (ActiveColumn - 1)).Formula = "=AVERAGE('" & LabourSheet & "'!" & .Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes) _
.Address(False, False) & ":" & .Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes + NbRepairCodes - 1).Address(False, False) & ")"
End With
(这个给了=AVERAGE('C Labour Rate'!C6:G6)
)
With Worksheets(YearToFill).Cells(PosStartLine + (TPINb * 3) - 3, PosStartColumn + (ActiveColumn - 1)) 'Formula for the average occurences of the TPI in Europe
.Formula = "=AVERAGE('" & LabourSheet & "'!" & .Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes) _
.Address(False, False) & ":" & .Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes + NbRepairCodes - 1).Address(False, False) & ")"
End With
(第二个数字为=AVERAGE('C Labour Rate'!E9:I9)
)
那里发生了什么? 我什至尝试将两个公式一个接一个地写下来,然后通过逐步运行代码来检查结果,显然结果并不相同...
我猜是由“ .cells”引起的,但是为什么呢?没有“偏移”或其他功能,取决于活动单元格...
我不理解,也没有在互联网上找到帮助,主要是因为我不知道如何搜索:'(
先谢谢您的帮助! :)
答案 0 :(得分:2)
是的,因为您在公式中使用.Cells
,所以将其附加到with上:
第一:
Worksheets(YearToFill).Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes + NbRepairCodes - 1).Address(False, False)
第二:
Worksheets(YearToFill).Cells(PosStartLine + (TPINb * 3) - 3, PosStartColumn + (ActiveColumn - 1)).Cells(PosStartLine + (TPINb * 3) - 1, PosStartColumn + (ActiveColumn - 1) * NbRepairCodes + NbRepairCodes - 1).Address(False, False)
单元格相对于父级:
Worksheets().Cells()
相对于A1
但是
Worksheets().Range("B10:B20").Cells(1,1).Address(0,0)
将返回B10
而不是A1
,从而使地址偏移。