同一个公式不同的写法会给出不同的结果?
Different ways of writing the same formula give different results?
我回到了这个我不完全理解的公式(但比上次更好;))并编辑它以在其他地方使用它...
我的问题很简单,我采用了完全相同的公式,但是根据我在 "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)
)
里面发生了什么?
我什至尝试了一个接一个写下的 2 个公式,并通过 运行 逐步模式的代码检查结果,显然没有相同的结果...
我想问题出在“.cells”上,但为什么呢?没有 "offset" 或其他功能,具体取决于活动单元格...
我不明白,也没有在互联网上找到帮助,主要是因为我不知道如何搜索:'(
预先感谢您的帮助! :)
是的,因为您在公式中使用了 .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)
会不会returnB10
不会A1
从而偏移地址。
我回到了这个我不完全理解的公式(但比上次更好;)
我的问题很简单,我采用了完全相同的公式,但是根据我在 "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)
)
里面发生了什么? 我什至尝试了一个接一个写下的 2 个公式,并通过 运行 逐步模式的代码检查结果,显然没有相同的结果...
我想问题出在“.cells”上,但为什么呢?没有 "offset" 或其他功能,具体取决于活动单元格...
我不明白,也没有在互联网上找到帮助,主要是因为我不知道如何搜索:'(
预先感谢您的帮助! :)
是的,因为您在公式中使用了 .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)
会不会returnB10
不会A1
从而偏移地址。