0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
1

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

06.10.2021, 11:32. Показов 611. Ответов 10
Метки vba (Все метки)

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

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

Спасибо!
0
Вложения
Тип файла: xlsx Пример.xlsx (10.7 Кб, 15 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2021, 11:32
Ответы с готовыми решениями:

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

Макрос для сравнения значений в массивах и копирования на отдельный лист
Добрый день! Нужна Ваша помощь. Во вложении на Листе 1 имеются данные с номерами вагонов,...

Как создать макрос для копирования, вставки, формулы и двойной вставки одних и тех же значений
Привет, сторонники Excel. Я благодарен за поддержку, которую вы мне оказываете. Я действительно...

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

10
1961 / 1340 / 629
Регистрация: 23.03.2015
Сообщений: 4,359
06.10.2021, 13:32 2
SergeyBelov,
Проверьте инструкцию в файле- там есть неточности:
в ячейке Е2 - 134 , а по инструкции должно быть 1222

Здесь и макрос не нужен...
0
5714 / 2992 / 626
Регистрация: 23.11.2010
Сообщений: 9,976
06.10.2021, 13:42 3
Narimanych, да не, все верно, в случае 1 в В4 должна быть единица, тогда мин = 134.
А вот что должно быть в С4, непонятно.
И да, вероятно макрос и не нужен
0
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
06.10.2021, 14:45  [ТС] 4
Во вложении ход расчета. Видимо я не совсем понятно расписал суть.
Значение 134 в E1 получается если значение "1" из ячейки D1 подставить в B1. Далее вниз по столбцу D методом перебора заданных в нём значений.
В контексте файла примера, да, макрос не нужен, т.к. эту формулу можно зашить сразу в столбец E. Но, как я написал в разъяснении, формула дана упрощенная, для наглядности и понимания структуры ввода и вывода параметров, по факту у меня формула которая учитывает 600 ячеек в строке в ширину. Смысл макроса подстановка значений из таблички столбца D в ячейку B1, из которой формула в строке 1 будет брать значение, ссылка на это значение во всех 600 ячейках (в ширину) этой строки заморожена, затем другая формула в строке 2 обрабатывает эти 600 значений в строке 1, и в ячейке B2 появляется число, которое нужно скопировать и занести в столбец E. Данную подстановку нужно сделать для (задаваемого) диапазона значений D111 (в файле примера), и заполнить в ячейках E1:E11 соответствующие им значения полученные из формулы.
Макрос я самостоятельно адаптирую под мою структуру файла. Суть того с какими ячейками и как он должен работать, описывает файл примера.
0
Миниатюры
Макрос для подстановки значений в формулу и копирования результата вычисления  
484 / 443 / 172
Регистрация: 11.12.2013
Сообщений: 2,339
06.10.2021, 15:00 5
как мне кажется ничего подставлять в ячейку В4 не надо, просто считайте значение из ячейки D1 в переменную и дальше в макросе используйте эту переменную для вычислений.
0
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
06.10.2021, 15:18  [ТС] 6
Цитата Сообщение от Алекcей Посмотреть сообщение
как мне кажется ничего подставлять в ячейку В4 не надо, просто считайте значение из ячейки D1 в переменную и дальше в макросе используйте эту переменную для вычислений.
Логично, но, в моем случае та часть файла которая связана с ячейкой B4 и формулами в стоках 1 и 2, должна остаться нетронутой. Файл посчитан по конкретному значению B4. А макрос нужен как раз что бы иметь табличку со значениями в столбце E, которые могут получится при различных соответствующих им значениям D. Тот макрос который мне нужен, это что бы взять и провести обсчет неповоротливого файла, подставляя в ячейку B4 разные значения. Структуру формул менять нельзя. Можно конечно вручную повбивать значения в B4 и копировать значения из B2, но мне нужно проверить скажем 50 чисел.

Привожу фрагмент записи макроса:

Вот нужно сделать такой же алгоритм только что бы его можно было задать сразу через указание ячеек получения данных для подстановки D111 и ячеек вывода данных E1:E11

Код
Sub Perebor()


    Range("D4").Select
    Selection.Copy
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B4").Select
    ActiveSheet.Paste
    Range("B2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B4").Select
    ActiveSheet.Paste
    Range("B2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E8").Select
End Sub
0
Вложения
Тип файла: xlsx Пример (1).xlsx (10.7 Кб, 3 просмотров)
484 / 443 / 172
Регистрация: 11.12.2013
Сообщений: 2,339
06.10.2021, 16:44 7
не уверен что сделал то, что нужно, но посмотрите на всякий случай
1
Вложения
Тип файла: zip Пример (13).zip (15.5 Кб, 3 просмотров)
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
07.10.2021, 14:24  [ТС] 8
Добрый день. Видимо я своим файлом примера ввел в заблуждение. Приведу более развернутое описание. Ведется расчет срока окупаемости (курсовая), есть файл с расчетом. Его структура на изображении. В сами формулы макрос не должен вмешиваться. Задача макроса брать значения из таблички "вариация тарифа" и подставлять в ячейку отмеченную стрелочкой, затем полученное значение из другой ячейки "срок окупаемости" копировать и заносить в таблицу в соседний столбец. Сам файл трогать нельзя. Поэтом и прошу помочь с макросом, т.к. он нужен как "примочка" к текущему расчету что бы ускорить обсчет различных величин тарифа и получить соответствующие им сроки окупаемости.
Спасибо!
0
Миниатюры
Макрос для подстановки значений в формулу и копирования результата вычисления  
5714 / 2992 / 626
Регистрация: 23.11.2010
Сообщений: 9,976
07.10.2021, 14:57 9
SergeyBelov, лучше приложите файл, замените свои подписи на "овцы" и "бараны", оно точно не к чему)
1
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
07.10.2021, 15:29  [ТС] 10
Во вложении файл с задачей. Насколько смог подробно описал требуемые для макроса действия.
0
Вложения
Тип файла: xlsx Рога и копыта.xlsx (49.2 Кб, 11 просмотров)
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 34
08.10.2021, 15:39  [ТС] 11
Нашел на эксельпедии вот такой макрос:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub PereborDiapazonaYacheek() 
'Шаг 1: Объявить переменные 
Dim MyRange As Range Dim MyCell As Range
 'Шаг 2: Определение целевого диапазона.
 Set MyRange = Range("D6:D17") 
'Шаг 3: Запуск цикла через диапазон. 
For Each MyCell In MyRange 
'Шаг 4: Какое-либо действие с каждой ячейкой.
[B] If MyCell.Value > 3000 Then 
MyCell.Font.Bold = True End If [/B]
'Шаг 5: Перейти к следующей ячейке в диапазоне Next MyCell End Sub
Если заменить 2 выделенные строки кода на действие копировать в такую то ячейку и потом скопировать результат из третьей, и затем записать в четвертую, этот алгоритм будет работать? Я так понимаю что будет все записываться в одну ячейку. Что бы макрос записал столбец с результатом, нужно параллельно запускать второй цикл для заполнения ячеек с результатом?

Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2021, 15:39

Сравнения значений столбцов и копирования результата в отдельную таблицу
есть два файла файл№1 - нужно взять значение из столбика 3 слева в столбике могут быть как...

Макрос копирования значений в ряд при изменении в ячейке.
Доброго дня всем! Помогите в написании макроса. Есть диапазон ячеек в столбце - А1:А20. Значения в...

Макрос копирования заданного диапазона значений на другой лист
Добрый день, форумчане. Вводная информация по задачке, которая поступила недавно в мой адрес:...

Макрос для подстановки символов в словах
Здравствуйте, всем. Подскажите как написать макрос для Word, который будет в каждом слове текста...

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

Определите макрос SQR с формальными параметрами для вычисления x2, макрос-константу SIZE для задания размера массива и протестируйте работу макроса
Определите макрос SQR с формальными параметрами для вычисления x2, макрос-константу SIZE для...

Вывести формулу вычисления значений матрицы
P(P+1)/2 - (n(n-1)/2 + n - m + 1) P - размерность матрицы n - номер столбца m - номер строки. Эта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.