Страницы: 1
RSS
Как умножить таблицу на единую переменную?
 
Задача: есть диапазон 5*200 ячеек, заполненный простыми числами. Необходимо умножить каждую ячейку на некоторую переменную $A$1. В результате в первичных ячейках должны быть не значения, а формулы типа =$A$1*0,52 (где 0,52 - это первичное число, содержащееся в ячейке).
В жизни: есть спецификация расчет цены продукции на каждом этапе производства (их 5). Цена в у.е. и пересчитывается в разрезе курса по ЦБ на текущий день. Т.е. ежедневно нужно пересчитывать 1000 значений. Хотелось бы ограничится внесением актуальных данных курса у.е. в $A$1 и получить полный пересчет данных на листе.
Как это можно сделать?
 
Ekdor, а просто умножить нельзя через специальную вставку?
Не бойтесь совершенства. Вам его не достичь.
 
После специальной вставки получаем также массив из простых чисел, а не формул. Получается его нужно ежедневно пересчитывать через специальную вставку. Некомфортно использовать, усложняет быструю аналитику + сложно объяснять другим пользователям файла, как это делается)
 
Ekdor, записать можно макрос и все... не рабоатл.
Изменено: a.i.mershik - 22.05.2018 16:16:19
Не бойтесь совершенства. Вам его не достичь.
 
Макросом пробежаться по ячейкам и вставиь формулы. Иначе решения не вижу. Ручками не в счет )
Макрос должен знать. какие ячейки в диапазоне нужно менять (проще, если все).
 
Цитата
a.i.mershik написал:
Ekdor , записать можно макрос и все...
Не умею) хотелось бы какими-то более простыми средствами, если это возможно...
 
выделить нужный диапазон с числами и запустить макрос:
Код
Sub test()
    Dim cell As Range
    For Each cell In Selection
        cell.Formula = "=$A$1*" & cell.Value
    Next cell
End Sub
 
Код
Sub zzz()
Dim c As Range

For Each c In Selection.Cells
    c.FormulaLocal = "=$A$1*(" & c.Value & ")"
Next c

End Sub
Изменено: Wiss - 22.05.2018 16:20:21
Я не волшебник, я только учусь.
 
Т.е. кроме как макросом тут никакого лекарства нет... :(
 
Есть. Мануальная акупунктура в каждую точку :)
 
Ekdor, а чем вам макрос не угодил? тем более, что вам его уже написали (2 раза :))
 
Ну как вариант сделать еще одну таблицу, такую же как исходная и форумлой умножать.  
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
webley, Думаю ТС просто не понял, что дают код для разового использования, после которого только в A1 нужные значения вставляются.
Цитата
Bema написал:
Ну как вариант сделать еще одну таблицу
а вот это поддержу, не стоит константы первичных данных замешивать в формулы. На отдельном листе сделать и скрыть.
По вопросам из тем форума, личку не читаю.
 
Нет, можно, конечно, медленно, мучительно и без макросов:
1. Создаём новый лист, на котором в А2 пишем формулу =сцепить("ЛюбойРедкийСимвол" ; Лист1!A2)
2. Растягиваем это счастье на столько клеток, на сколько надо.
3. Копируем и вставляем как значение.
4. Делаем автозамену ЛюбойРедкийСимвол на =$A&1*
5. Мучаемся с ошибками в пустых ячейках и ещё чёт его знает в чём.
6. Радуемся
Изменено: Wiss - 22.05.2018 16:42:21
Я не волшебник, я только учусь.
 
придумал еще один способ
1. Сделать копию нужного диапазона при помощи формул ="@"&C3 и т.д. где нибудь рядом
2. Скопировать полученный диапазон на место первоначального Специальная вставка - Значения (в результате к цифрам прибавится знак @)
3. Сделать замену - @ на =$A$1*
 
Wiss, как-то мы с Вами сходно мыслим :):):)
 
Цитата
webley написал:
Ekdor , а чем вам макрос не угодил? тем более, что вам его уже написали (2 раза )
Не то, чтобы не угодил... :)
Я не знаю, куда это готовое решение приложить. Надо учить матчасть, а по временным затратам это может быть дольше "руками подставить" :)
 
Есть простой вариант, генерящий "умноженный" дубликат исходной таблицы. В нужное для левого верхнего угла новой таблицы место забиваем массивную формулу (вводить через Ctrl+Shift+Enter)
Код
=$A$1*A3:B4

(A3:B4 — условный диапазон, выделяем наш) и растягиваем по размеру нашей таблицы.
А на месте — только ручками, ясейка сама себя менять не умеет.
Изменено: StoTisteg - 22.05.2018 17:04:21
 
StoTisteg, ну как бы не  совсем так как вы описали. Если делать по вашему так проще просто =$A$1*A3 и растянуть получив вариант от Bema,

а то что вы пытались показать , так это выделяем a6:b7, пишем в строке редактора формул  =$A$1*A3:B4 и Ctrl+Shift+Enter
По вопросам из тем форума, личку не читаю.
 
БМВ, ну да, так. Видимо, неправильно объяснил.
 
Цитата
StoTisteg написал:
Видимо, неправильно объяснил.
так ведь и в файле Вашем не так, как хотели, а так, как написали. Все как по написанному, смещение диапазона и возврат первого значения исходного массива, а это TOPLEFT или просто a3
Изменено: БМВ - 22.05.2018 19:40:26
По вопросам из тем форума, личку не читаю.
 
Цитата
Ekdor написал:
В жизни: есть спецификация расчет цены продукции на каждом этапе производства (их 5). Цена в у.е. и пересчитывается в разрезе курса по ЦБ на текущий день. Т.е. ежедневно нужно пересчитывать 1000 значений. Хотелось бы ограничится внесением актуальных данных курса у.е. в $A$1 и получить полный пересчет данных на листе.
Извините за длинную цитату, но она необходима для сути моего предложения.
Эти 1000 значений - фактически константы. Разместите их на отдельном (скрытом) листе, а в спецификацию вставьте и растяните обычную формулу типа =$A$1*другойЛист!A1
При этом значения не будут случайно испорчены, а если понадобится изменить константы - проще это сделать с числами в ячейках, а не в формулах.
 
Идея интересная
Цитата
Казанский написал:
Эти 1000 значений - фактически константы. Разместите их на отдельном (скрытом) листе, а в спецификацию вставьте и растяните обычную формулу типа =$A$1*другойЛист!A1
 
Это не идея, а правильный подход сформулированный жизнью :)
У Вас есть два объекта: справочник расценок на производственные операции и курс валюты. Вы пытаетесь вычислять третий объект внутри первого. Так делать не надо т.к. вы теряете возможность раздельного управления первым и третьим объектом. Дополнительно хочу отметить, что статический, на первый взгляд, справочник расценок может в любой момент стать динамическим, что при вашем подходе приведет к дополнительным сложностям.

Возможно, коряво написано, но, надеюсь, суть понятна.
Изменено: Andych - 28.05.2018 15:55:14 (Орфография)
 
Мысль понятна и очень рациональна.
Кнопка цитирования не для ответа [МОДЕРАТОР]
 
Случайно вот получилось, что задача ТС вполне решаема таким образом.
В примере вводим в ячейку А1 курс бакса
в ячейке А2 пишем фиксированную ссылку на $А$1
Далее копируем ячейку А2, выделяем диапазон со ценами в баксах и через специальную вставку умножаем на скопированную ячейку. В результате получаются формулы как в столбце D. При этом меняя курс бакса вы получаете изменение и в ценах.
Как-то так.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх