gpt4 book ai didi

excel - 您是否应该在 VBA 代码中使用绝对引用

转载 作者:行者123 更新时间:2023-12-04 20:29:42 25 4
gpt4 key购买 nike

在清理和优化大量 VBA 代码时,我想到了以前从未有过的东西。正如您在以下代码块中看到的那样,我总是对“静态”单元格使用绝对单元格引用,在 VBA 中编写公式时,这些单元格必须始终引用相同的地址。我知道在公式中使用绝对引用的重要性,但是是否需要始终以这种方式引用此类单元格?
例如,第一个引用(单元格 G12)".Range("G12").Formula ="=SUM(J16:J"& LastCORow) * $G$12"是否需要是 "$G$12 如果它是公式中使用的单元格值。
我在问它是否是必要的或良好的编码实践。

' refresh the formulas
' G8 Materials =SUM(F16:F34)
' G9 Labor =SUM(H16:H34)
' G10 Hours =SUM(I16:I34)
' G11 SubContracts -->depends on G2 (Markup)
' G12 Profit Margin -->depends on G3 (Profit/Overhead)

' set the subcontracts formula and label
If Len(.Range("E11").value) Then ' if the Invoice was set to markup the Sucontracts
.Range("G11").Formula = "=SUM(G16:G" & LastCORow & ")*(1+$G$2)"
.Range("E11").value = "Subcontracts (" & (.Range("G2") * 100) & "% Markup):"
Else
.Range("G11").Formula = "=SUM(G16:G" & LastCORow & ")"
.Range("E11").value = "Subcontracts:"
End If

' G8 Materials
.Range("G8").Formula = "=SUM(F16:F" & LastCORow & ")"
' G9 Labor
.Range("G9").Formula = "=SUM(H16:H" & LastCORow & ")"
' G10 Hours
.Range("G10").Formula = "=SUM(I16:I" & LastCORow & ")"
' G12 Profit Margin -->depends on G3 (Profit/Overhead)
.Range("G12").Formula = "=SUM(J16:J" & LastCORow & ",K4,J8:J10,($G$2*SUM(G16:G" & LastCORow & ")))* $G$3"
' Lastly the job total
.Range("C" & LastCORow + 4).Formula = "=ROUND(SUM(J16:J" & LastCORow & ",K4,J8:J10, ($G$2*SUM(G16:G" & LastCORow & ")))*(1+$G$3),0)"

在前面的代码中,G 列中的所有值都用作公式中的计算变量,它们的地址永远不会改变。所以简单地说,问题是他们都需要绝对引用吗?

最佳答案

如果您的引用单元格从不更改地址,那么是的:绝对引用是正确的。

关于在公式中是使用绝对地址还是相对地址,没有单一的答案。这完全取决于您如何使用数据。在你的情况下,让它们绝对是很有意义的。

关于excel - 您是否应该在 VBA 代码中使用绝对引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52952830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com