Как добавить знак доллара $ в сложную формулу?

Я уже задавал несколько вопросов по этому коду, который пишу для работы, и в другом посте (здесь: Как вставить через VBA формулу в ячейку со специальными символами, такими как - или $? ), 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$8)"
End With

Которые один раз в ячейках дают, например: =ЕСЛИ(ИЛИ(C4="-";C4="X");"-";Cars!C4*C4*Данные!$C$8)

Не удивлюсь, если я скажу вам, что не полностью понимаю сторону VBA...

Во всяком случае, это работает, но мне нужно будет добавить несколько знаков доллара «$», поскольку я копирую всю таблицу, а «Cars! C4» должен оставаться как есть...

Итак, как добавить красивые знаки доллара на «Cars!C4», чтобы они стали «Cars!$C$4»?

Я пробовал так:

",Машины!" & .Cells("$" & PosStartLine + (TPICode * 3) - 3, "$" & Split(Cells(1, col).Address, "$" )(1)).Адрес(Ложь, Ложь)

",Машины!" & .Cells(""$"" & PosStartLine + (TPICode * 3) - 3, ""$"" & Split(Cells(1, col).Address , "$")(1)).Address(False, False)

",Машины!" & .Cells(chr(36) & PosStartLine + (TPICode * 3) - 3, chr(36) & Split(Cells(1, col).Address, " $")(1)).Адрес(Ложь, Ложь)

выдает ошибку "несоответствие типов" :'(

Ничего не получилось...

Я, конечно, искал в Интернете, но всегда находил страницы, где объяснялось, что можно нажать F4 и для чего нужны знаки доллара...

Заранее спасибо!


person zepeu    schedule 30.08.2019    source источник


Ответы (3)


.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**)
person Epik    schedule 30.08.2019
comment
А? Это так просто? Спасибо д - person zepeu; 30.08.2019

Вы указали .Address(False, False) Операторы False предназначены для RowAbsolute и ColumnAbsolute Изменение их на True, где это применимо, даст вам знаки доллара для абсолютной ссылки на ячейку вместо относительной.

e.g.

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$8)"
End With
person Tom    schedule 30.08.2019
comment
Спасибо за объяснение :) - person zepeu; 30.08.2019
comment
@zepeu Следует добавить - значение по умолчанию для них True, поэтому вы можете просто удалить скобки, если хотите - person Tom; 30.08.2019

Разве нельзя было бы сделать это, просто добавив знаки доллара в кавычках в формулу, как показано ниже:

"$"
person ekbrothers    schedule 30.08.2019
comment
Ну, как вы видели, формула не написана напрямую, я пробовал, конечно, выдает ошибку... Я отредактирую свой пост, чтобы добавить то, что я пробовал, извините, что забыл об этом ^^, - person zepeu; 30.08.2019