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

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Читайте новые сообщения форума форума в RRS-агрегаторах

Автор Тема: Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы.  (Прочитано 94 раз)

0 Пользователей и 1 Гость просматривают эту тему.

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 924

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

Есть вот такая часть кода:                                    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: Если не угадал с названием темы - подскажите как народу будет удобнее. Поправлю.
« Последнее редактирование: 10.10.2018, 13:10:49 от GWolf »
Записан
Путей к вершине - множество. Этот один из многих!

Pelena

  • Постоялец
  • ***
  • Уважение: +35/-0
  • Оффлайн Оффлайн
  • Сообщений: 280
Re: Формулу в ячейку макросом
« Ответ #1 : 10.10.2018, 08:45:14 »

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

vikttur

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +48/-0
  • Оффлайн Оффлайн
  • Сообщений: 987
Re: Формулу в ячейку макросом
« Ответ #2 : 10.10.2018, 12:25:32 »

Дело не в массиве, а в хотелке. Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы формулы
"=" & zn1 & "+" & zn2
Если моя версия соответствует желаемому, то так и следует переименовать тему
« Последнее редактирование: 10.10.2018, 12:33:41 от vikttur »
Записан

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 924

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

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

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

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 924

   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.
Может кому то пригодится.
Записан
Путей к вершине - множество. Этот один из многих!
 



Темы без ответов

30.09.2018 10:24 Расчет процентов за определенный период (месяц) с учетом изменений и платежей 130
22.05.2018 11:38 Скрипт написать который допишет данные в файл 695
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 941
14.02.2018 10:11 Подготовить читабельную отчетность по платежам 914
23.01.2018 13:46 Найти вероятность повторной покупки 859
12.01.2018 23:56 Сделать отчет на Power BI (Dashboard) 1195
06.09.2017 10:43 Solver VBA не решает гиперболическое уравнение, но при этом решает гармоническое 1116
17.08.2017 12:15 Гиперссылка и фильтр одновременно макрос 1444
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 3105
15.03.2017 15:45 автозамена картинок PowerPoint 1844





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.288 секунд. Запросов: 109.