Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы.

Автор GWolf, 10.10.2018, 07:12

« назад - далее »

GWolf

Доброго времени суток, коллеги!

Есть вот такая часть кода:                                    zn1 = 0: zn2 = 0
                                    zn1 = .Cells(CLng(arrNakopL(0, i)), 10).Value
                                    zn2 = .Cells(CLng(arrNakopL(0, i)), 9).Value

                                    With .Cells(CLng(arrNakopL(0, i)), 10)
                                        .NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
                                        .FormulaR1C1 = zn1 + zn2
                                    End With

в ячейку .Cells(CLng(arrNakopL(0, i)), 10) пишется результат вычисления .FormulaR1C1 = zn1 + zn2
т.е. число, ну например 700, где соответственно: zn1 = 100, а zn2 = 600.
А хотелось бы, что бы в ячейку писалась формула вида: =100+600
Пытался записать так: .FormulaR1C1 = "=" & zn1 & "+" & zn2 - выдает ошибку.

Помогите, пожалуйста, разобраться: что я делаю неправильно?
Всем откликнувшимся, заранее Спасибо!

PS: Если не угадал с названием темы - подскажите как народу будет удобнее. Поправлю.
Путей к вершине - множество. Этот один из многих!

Pelena

Здравствуйте.
Какую именно ошибку? у меня нормально отработало с вариантом
.FormulaR1C1 = "=" & zn1 & "+" & zn2
Правда, вместо массива CLng(arrNakopL(0, i)) использовала просто индекс i
Может, дело в массиве?

vikttur

#2
Дело не в массиве, а в хотелке. Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы формулы
"=" & zn1 & "+" & zn2

Если моя версия соответствует желаемому, то так и следует переименовать тему

GWolf

Большущее спасибо Вам, друзья!

Я, как-то, увлеченный проектом, не заметил того, что не всем будет понятно - для чего я в координату ячейки "приплел" массив. Дело в том, что по задумке я в двумерный массив собираю номер строки и значение, которое затем обрабатываю (увеличиваю на заданную величину, которую так же рассчитываю, как сумму значений массива деленную на количество значений массива) и что бы не искать, каждый раз номер строки я его храню в поле массива. Должно быть запутанно объяснил, но это работает!
А для того, что бы была возможность просмотреть "детали" вычисления (промежуточные по - шаговые результаты) мне и нужно, что бы в ячейке были вписаны "числовые аргументы формулы".

С Вашей помощью все заработало!
Путей к вершине - множество. Этот один из многих!

GWolf

   zn1 = "": zn2 = "" 'присваиваем "пусто" текстовым переменным
            zn1 = .Cells(CLng(arrNakopL(0, i)), 9).Formula 'в переменную числовые аргументы формулы
            zn2 = CStr(Round(CDbl(arrNakopL(1, i)) * koef, 2))
                               
            With .Cells(CLng(arrNakopL(0, i)), 9) 'в ячейку (nR,9)
                 .NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 " ' с принудительно заданным числовым форматом
                 '.FormulaR1C1Local = "=ОКРУГЛ(" & zn1 & "+" & zn2 & "; 2)" ' заготовка
                 .FormulaR1C1Local = "=" & zn1 & "+" & zn2 ' результат вычислений, как числовые аргументы формулы
            End With
                                   
            zn1 = "" 'присваиваем "пусто" текстовой переменной
            zn1 = .Cells(CLng(arrNakopL(0, i)), 10).Formula 'в переменную числовые аргументы формулы
            zn1 = Replace(zn1, "=", "", 1, 1, vbTextCompare) ' "чистим" строковую переменную от ведущего знака "="

            With .Cells(CLng(arrNakopL(0, i)), 10) 'в ячейку (nR,10)
                 .NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 " ' с принудительно заданным числовым форматом
                 .FormulaR1C1Local = "=" & zn1 & "+" & zn2 ' результат вычислений, как числовые аргументы формулы
            End With
                                   
            zn1 = "": zn2 = "" 'присваиваем "пусто" текстовым переменным


Ну, вот так реализовалась эта "хотелка", как сказал, уважаемый vikttur.
Может кому то пригодится.
Путей к вершине - множество. Этот один из многих!