如何将美元 $ 符号添加到复杂的公式中?

How to add a Dollar $ sign to a complex formula?

我已经为我为工作编写的这段代码问了几个问题,在另一个 post(这里:)中,JvdV 给了我那个公式:

With Worksheets(LabourSheet)
    .Cells(PosStartLineCalc + 1, PosStartColumnLt).Formula = "=IF(or(" & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "=""-""," & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "=""X""),""-"",Cars!" & .Cells(PosStartLine + (TPICode * 3) - 3, Split(Cells(1, col).Address, "$")(1)).Address(False, False) & "*" & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "*Data!$C)"
End With

一旦在单元格中给出,例如:=IF(OR(C4="-";C4="X");"-";Cars!C4*C4*Data!$C$8 )

如果我告诉你我不完全理解 VBA 方面,请不要感到惊讶...

无论如何,它有效,但我需要添加一些“$”美元符号,因为我复制了整个 table 并且 "Cars!C4" 应该保持原样...

那么,如何在 "Cars!C4" 上添加漂亮的美元符号以成为 "Cars!$C"?

我这样试过:

",汽车!" & .Cells("$" & PosStartLine + (TPICode * 3) - 3, "$" & 拆分(单元格(1,列)。地址,“$”)(1))。地址(假,假)

",汽车!" & .Cells(""$"" & PosStartLine + (TPICode * 3) - 3, ""$"" & 拆分(单元格(1,列)。地址,“$”)(1))。地址(假,假)

",汽车!" & .Cells(chr(36) & PosStartLine + (TPICode * 3) - 3, chr(36) & 拆分(单元格(1,列)。地址,“$”)(1))。地址(假,假)

它给我一个 "type mismatch" 错误:'(

没有任何效果...

当然,我在互联网上进行了搜索,但我总能找到解释您可以按 F4 以及美元符号是什么的页面...

提前致谢!

是否可以通过简单地在如下公式中添加两侧带有引号的美元符号来做到这一点:

"$"
.Cells(PosStartLine + (TPICode * 3) - 3, Split(Cells(1, col).Address, "$")(1)).Address(False, False)

在这段代码中,将 .address 的参数更改为 (True,True)

.Cells(PosStartLine + (TPICode * 3) - 3, Split(Cells(1, col).Address, "$")(1)).Address(**True, True**)

您已指定 .Address(False, False) False 语句适用于 RowAbsoluteColumnAbsolute 将这些更改为 True(如果适用)将为您提供美元符号对于绝对单元格引用而不是相对

例如

With Worksheets(LabourSheet)
    .Cells(PosStartLineCalc + 1, PosStartColumnLt).Formula = "=IF(or(" & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "=""-""," & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "=""X""),""-"",Cars!" & .Cells(PosStartLine + (TPICode * 3) - 3, Split(Cells(1, col).Address, "$")(1)).Address(True, True) & "*" & .Cells(PosStartLineCalc, PosStartColumnLt).Address(False, False) & "*Data!$C)"
End With