Excel формулы или макросы

ник, пытался побороть систему при помощи ссылки на макрос, но поскольку ничего в макросах не понимаю, победы не  произошло! Можете помочь в столь трудном деле?

Заодно, хотел бы Вам, профессионалам, поставить еще одну небольшую, но непосильную для меня, сверхзадачу!
Во вкладке Расчет я на данный момент дописываю все стандартное оборудование, что использую, чтобы в будущем просто выбором количества подставлять его в коммерческое предложение, аналогично созданной совместно с Вами схеме с работами. То оборудование, которого мне будет нехватать, буду просто дописывать, добавляя строки (что будет крайне редко)!

1. Насколько я понял можно написать формулу, которая будет обновлять (и проставлять) цены из прайсов согласно коду продукта, т.е. будет находить в прайсе строчку с кодом и подставлять в позицию цена стоимость из соответстующей позиции прайса. Для разных прайсов я бы вносил эти формулы по разному — т.е. под разные столбцы прайсов и в разные колонки… Необходимо ли для этого, чтобы прайсы были открыты?

2. Во вкладку спецификация хотелось бы по столбцам добавлять информацию только о материалах, так же как и в коммерческое предложение, т.е. в Расчете с проставленным количеством. При этом я не понял как сделать так, чтобы каждый раз переносились строки на соответствующие страницы, т.е. с 25 строки на 40, а после окончания 2-ой страницы создавалась автоматически 3-я и т.д. При этом количество листов в поле R33 должно быть соответственным количеству листов, а на каждой странице номер должен увеличиваться по порядку!
И еще один сложный момент: Реально ли сделать так, чтобы при условии, что текст не влезает в одну строку (неважно по какому столбцу) он не расширял строку, не терялся, а переносился на следующую!!!! очень важный момент, если это возможно!

3. Вкладка Смета. В раздел 1 — Оборудование и материалы, должны попадать все ненулевые материалы из Расчета с соответствующим увеличением количества строк, а в раздел Работы аналогично все ненулевые работы, при этом их цена должна идти за вычетом НДС, т.е. деленая на 1,18. В итогах должна складываться в суммы по разделам, добавляться НДС и получаться ВСЕГО.

Задача для меня нереально сложная, все что мог сам сделать, сделал!
Прошу о помощи у профессионалов!

Файл прилагаю!

 

А А

Пользователь

Сообщений: 5
Регистрация: 30.11.2021

Добрый день, в написание макросах только начинаю разбираться, но тут упала задачка, просьба помочь
Необходимо из документа со страницы Массив сделать копирование и сортировку данных и вставить нужные значения по датам

Прикрепленные файлы

  • 124.xlsx (25.92 КБ)

Изменено: А А30.11.2021 08:38:48

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

а файл где?

Изменено: New30.11.2021 08:39:37

 

А А Сначала надо прочитать правила форума. необходим файл пример с частью исходных данных и какой результат хотите получить

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

файл приложили, но хотелось бы ещё чтобы вы показали, какой результат на листе хотите получить )

 

А А

Пользователь

Сообщений: 5
Регистрация: 30.11.2021

В файле на странице шаблон добавил данные которые должны получаться, просто ожидается работа с большими массивами и хотелось бы оптимизировать работу

Прикрепленные файлы

  • 124.xlsx (28 КБ)

 

А А . Уточняющий вопрос. Значения в столбце заказы уникальные?
Глупый вопрос задал. Плохо посмотрел файл

Изменено: Евгений Смирнов30.11.2021 09:02:48

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

А А, См. файл

Прикрепленные файлы

  • 124.xlsm (35.42 КБ)

Изменено: New30.11.2021 09:08:43

 

А А

Пользователь

Сообщений: 5
Регистрация: 30.11.2021

#8

30.11.2021 09:02:07

Цитата
написал:
А А , см. файл

Прикрепленные файлы
124.xlsm  (35.32 КБ)

А как сделать так чтоб он не дублировал ФИО, а именно под одним забивал несколько дат?

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

А А, см. файл (я сильно файл не тестировал, потестируйте сами — всё ли корректно копируется)
P.S. Пожалуйста, не нужно нажимать кнопку «Цитировать», нажимайте кнопку «Имя»

Прикрепленные файлы

  • 124.xlsm (35.98 КБ)

Изменено: New30.11.2021 09:10:06

 

Msi2102

Пользователь

Сообщений: 3134
Регистрация: 31.03.2014

Может хватит просто сводной таблицы

 

New Быстро вы написали методом Find

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

)) годы тренировок. Но вот что мне не нравится — пишешь, пишешь, макрос, а потом бац и Сводная… Я помню в далёком где-то 2010-м тут тоже писал макрос там строк на 40, а пришёл KL (Кирилл Лапин, MVP по Excel, давно тут его нет ((( ), создал в файле сводную и кнопку на лист с командой типа Сводная1.Refresh (для обновления и всё)… а я пыжился… Т.е. не всегда нужно зацикливаться на макросах… а тем более с приходом PQ

Изменено: New30.11.2021 09:27:10

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#13

30.11.2021 09:31:30

Off

Цитата
New написал:
Но вот что мне не нравится

Используй то что под рукою и не ищи себе другое. Есть куча встроенных инструментов, которые в умелых руках и с минимумом кода для автоматизации, решают многие задачи. Не всегда это работает быстро, но когда время разработки в разы меньше, а скорость на доли сек. отлична, то …..

По вопросам из тем форума, личку не читаю.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Согласен. Когда у тебя в руках молоток, то всё вокруг становятся гвоздями…
P.S. Но тут всё-таки задача от ТС была в заполнении его таблицы, а Сводная — это уже как бы обходной манёвр, который может подойти для ТС, а может и не подойти (одному подойдёт, а другому нет)

Изменено: New30.11.2021 09:35:39

 

New  Я в принципе конечно чаще прибегаю к макросам. У меня это просто хобби. Даже не умею толком сводные делать. Просто таких задач нет, зачем осваивать.
А макросы чисто спортивный интерес, проверить можешь ли хоть что-нибудь написать.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Евгений Смирнов, точно такая же фигня — VBA просто спортивный интерес. Хотя сводные умею строить

Изменено: New30.11.2021 09:38:24

 

Msi2102

Пользователь

Сообщений: 3134
Регистрация: 31.03.2014

#17

30.11.2021 09:37:07

Цитата
Евгений Смирнов написал:
Просто таких задач нет, зачем осваивать

Рано или позно поймете, что у Вас в руках не молоток, а подушка

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#18

30.11.2021 09:42:27

Цитата
А А написал: Формулы или Макрос

Ни то, ни другое —  Правила форума

65 / 22 / 7

Регистрация: 28.02.2018

Сообщений: 211

1

что быстрее — формула или макрос?

29.04.2019, 11:53. Показов 1919. Ответов 1


Студворк — интернет-сервис помощи студентам

Здравствуйте!
Появился следующий вопрос: у меня есть таблица тысячи на полторы строчек,
5 столбцов с данными и ещё 20 рассчитываются по формулам — и эта таблица подтормаживает.
Так вот, я подумал — возможно если рассчитать значение формул в vba,
то тормозов станет меньше? т.е. отслеживаем столбцы с данными,
если они меняются, то всё пересчитываем,
а вместо формул пишутся посчитанные значения.
Быстрее это будет, чем просто оставить формулы?
Или может подскажите другой вариант ускорения?..
Спасибо!



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

29.04.2019, 13:44

2

Цитата
Сообщение от viper-x
Посмотреть сообщение

отслеживаем столбцы с данными, если они меняются, то всё пересчитываем

Вычислитель формул в Excel работает именно так — пересчитываются только те формулы, у которых изменились входные данные. Но только если формулы не содержат «летучих» функций ДВССЫЛ, СМЕЩ, ТДАТА и т.д. — в этом случае формулы пересчитываются при каждом чихе.
Способ оптимизации зависит от того, какие формулы и как используется таблица. Если в нее только дописываются новые данные, а старые неизменны, имеет смысл заменить формулы на значения, оставив одну строку формул для копирования к новым данным.
Приложите файл пример, 10 строк достаточно.



1



Формулы или макросы

sweet-ty

Дата: Среда, 12.12.2012, 14:24 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Здравствуйте!
Мне необходимо подсчитать кол-во отработанных часов за день, с учётом обеденного перерыва.
Файл во вложении.

Спасибо!


С Уважением, Ольга

 

Ответить

Pelena

Дата: Среда, 12.12.2012, 14:31 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

sweet-ty, Ваши темы будут закрываться до тех пор, пока Вы не прочитаете Правила форума и не начнете их соблюдать


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

На чтение 4 мин. Просмотров 33.1k.

Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.

Уровень мастерства: Средний

Автоматизировать написание формул

Написание формул может быть одной из самых трудоемких частей
вашей еженедельной или ежемесячной задачи Excel. Если вы работаете над
автоматизацией этого процесса с помощью макроса, вы можете попросить VBA
написать формулу и ввести ее в ячейки.

Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.

Совет № 1: Свойство Formula

Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.

Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:

  1. Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
  2. Строка формулы должна начинаться со знака равенства = после первой кавычки.

Вот простой пример формулы в макросе.

Sub Formula_Property()

  ' Формула представляет собой строку текста, заключенную в кавычки
  ' Начинается со знака =
  Range("B10").Formula = "=SUM(B4:B9)"

End Sub

Свойство Formula также можно использовать для чтения существующей формулы в ячейке.

Совет № 2: Используйте Macro Recorder

Если ваши формулы более сложные или содержат специальные
символы, их будет сложнее написать в VBA. К счастью, мы можем использовать
рекордер макросов, чтобы создать код для нас.

Create Formula VBA code with the Macro Recorder

Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.

  1. Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
  2. Введите формулу или отредактируйте существующую формулу.
  3. Нажмите Enter, чтобы ввести формулу.
  4. Код создается в макросе.

Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.

Sub Macro10()
' Используйте средство записи макросов для создания кода для сложных формул с
' специальны символы и относительные ссылки

  ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")"
    
End Sub

Совет № 3: Нотация формулы стиля R1C1

Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.

Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.

R1C1 обозначает строки и столбцы.

Относительные ссылки

Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.

Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.

Отрицательные числа идут вверх по строкам и столбцам слева.

Положительные числа идут вниз по строкам и столбцам справа.

Абсолютные ссылки

Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.

Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1

При создании смешанных ссылок относительный номер строки или
столбца будет зависеть от того, в какой ячейке находится формула.

Проще всего использовать макро-рекордер, чтобы понять это.

Свойство FormulaR1C1 и свойство формулы

Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.

Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.

Если ваша электронная таблица изменяется в зависимости от
условий вне вашего контроля, таких как новые столбцы или строки данных,
импортируемые из источника данных, то относительные ссылки и нотация стиля
R1C1, вероятно, будут наилучшими.

Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.

Понравилась статья? Поделить с друзьями:
  • Excel формулы извлечение корня
  • Excel формулы знаки препинания
  • Excel формулы знак разделить
  • Excel формулы замены данных
  • Excel формулы еслиошибка впр