Страницы: 1
RSS
Подстановка формулы с помощью ВПР
 
Добрый день. Имеется таблица с названиями товаров, их стоимостью, количеством и итоговой суммой. Необходимо на основе данных ячеек столбца "Название товара", по-разному обрабатывать результат, отображаемый в столбце "Итоговая сумма". Т.е. например, для товара "Телевизор" итоговая сумма делится на 3 и умножается на 2, а для товара "Телефон" итоговая сумма умножается на 10. Хотел сначала сделать через функцию ВПР, где бы вместо значений подставлялись бы необходимые формулы, но эта функция возвращает в искомую таблицу значения в виде текста и формулы не подставляет. Не подскажете как обойти это или может другие варианты есть для решения этой задачи?
 
Константин М,
создаете некий справочник, где указываете необходимые коэффициенты для каждого наименования в двух столбцах: "для умножения" и "для деления"
далее ВПРом вытаскиваете эти значения, умножаете и делите (единственное, там, где не нужно делить или умножать, укажите коэффициент 1)

P.S. для более четкой помощи нужен небольшой файл-пример
Изменено: evgeniygeo - 25.09.2022 17:38:03
 
Константин М, есть в vba возможность текст переводить в формулу. Можно написать пользовательскую функцию:

Код
Function Eval(Ref As String)
   Application.Volatile
   Eval = Evaluate(Ref)
End Function
И уже с ней работать. Можно ей задавать текст, она будет считать. К примеру =Eval("A1*10")
 
Цитата
написал:
Константин М,
создаете некий справочник, где указываете необходимые коэффициенты для каждого наименования в двух столбцах: "для умножения" и "для деления"
далее ВПРом вытаскиваете эти значения, умножаете и делите (единственное, там, где не нужно делить или умножать, укажите коэффициент 1)

P.S. для более четкой помощи нужен небольшой файл-пример
Спасибо! Да, действительно, совсем не подумал про такой способ. В принципе, вариантов формул не так много, поэтому попробую так реализовать.
 
Цитата
написал:
Константин М, есть в vba возможность текст переводить в формулу. Можно написать пользовательскую функцию:

Код
    [URL=#]?[/URL]       1  2  3  4      Function   Eval(Ref   As   String  )         Application.Volatile         Eval = Evaluate(Ref)    End   Function   
  И уже с ней работать. Можно ей задавать текст, она будет считать. К примеру =Eval("A1*10")
Спасибо за вариант! У вас более универсальное решение, попробую и его.
 
Цитата
Константин М написал:
более универсальное решение,
Любая универсальность приводит, как правило, к какому то из компромиссов между чем-то.   В данном случае требуется обработка макросом, кстати можно обойтись и макрофункцией, но не суть. Но есть ли в этом смысл, если все формулы что вы описываете реально укладываются в одну с разными коэффициентами, как правильно отметил evgeniygeo.

Не следует цитировать если в этом нет необходимости, тем более все сообщение целиком.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх