Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: GWolf от 10.10.2018, 07:12

Название: Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы.
Отправлено: GWolf от 10.10.2018, 07:12
Доброго времени суток, коллеги!

Есть вот такая часть кода:                                    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: Если не угадал с названием темы - подскажите как народу будет удобнее. Поправлю.
Название: Re: Формулу в ячейку макросом
Отправлено: Pelena от 10.10.2018, 08:45
Здравствуйте.
Какую именно ошибку? у меня нормально отработало с вариантом
.FormulaR1C1 = "=" & zn1 & "+" & zn2
Правда, вместо массива CLng(arrNakopL(0, i)) использовала просто индекс i
Может, дело в массиве?
Название: Re: Формулу в ячейку макросом
Отправлено: vikttur от 10.10.2018, 12:25
Дело не в массиве, а в хотелке. Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы формулы
"=" & zn1 & "+" & zn2

Если моя версия соответствует желаемому, то так и следует переименовать тему
Название: Re: Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы.
Отправлено: GWolf от 10.10.2018, 13:30
Большущее спасибо Вам, друзья!

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

С Вашей помощью все заработало!
Название: Re: Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы.
Отправлено: GWolf от 10.10.2018, 14:52
   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.
Может кому то пригодится.