Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Расчет ячейки с использованием Function VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Работа и общение » Работа / Фриланс » Расчет ячейки с использованием Function VBA (Макросы/Sub)
Расчет ячейки с использованием Function VBA
enjoymeforever Дата: Понедельник, 05.11.2018, 14:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Имеем 2 ячейки 1-1 и 2-1.
Задача стоит в увеличении ячейки 1-1 с шагом 1 до тех пор, пока ячейка 2-1 не станет больше значения 10. Сейчас это делаю вручную, заполняя ячейку 1-1.
Ячейка 2-1 связана с ячейкой 1-1 через ряд вычислений, которые намеренно опустил, чтобы показать наглядность.
Для решения этой задачи хочу использовать Function в VBA, подставляя пользовательскую формулу в ячейку 2-1.
Насколько хватает понимания, функция должна иметь следующую текстовку:
[vba]
Код
Function KOEF(rass4et)
Do While rass4et < 10
rass4et = rass4et + 1
Loop
End Function
[/vba]

Понятное дело не работает, ибо мало опыта.
Благодарю за любую помощь.
К сообщению приложен файл: 6965332.xlsx (8.7 Kb)


Сообщение отредактировал enjoymeforever - Понедельник, 05.11.2018, 15:35
 
Ответить
СообщениеИмеем 2 ячейки 1-1 и 2-1.
Задача стоит в увеличении ячейки 1-1 с шагом 1 до тех пор, пока ячейка 2-1 не станет больше значения 10. Сейчас это делаю вручную, заполняя ячейку 1-1.
Ячейка 2-1 связана с ячейкой 1-1 через ряд вычислений, которые намеренно опустил, чтобы показать наглядность.
Для решения этой задачи хочу использовать Function в VBA, подставляя пользовательскую формулу в ячейку 2-1.
Насколько хватает понимания, функция должна иметь следующую текстовку:
[vba]
Код
Function KOEF(rass4et)
Do While rass4et < 10
rass4et = rass4et + 1
Loop
End Function
[/vba]

Понятное дело не работает, ибо мало опыта.
Благодарю за любую помощь.

Автор - enjoymeforever
Дата добавления - 05.11.2018 в 14:16
Pelena Дата: Понедельник, 05.11.2018, 15:28 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно с помощью Поиска решения подобрать.
Если надо многократно, записать макрорекодером
К сообщению приложен файл: 9675228.xlsx (71.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно с помощью Поиска решения подобрать.
Если надо многократно, записать макрорекодером

Автор - Pelena
Дата добавления - 05.11.2018 в 15:28
enjoymeforever Дата: Понедельник, 05.11.2018, 15:32 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Можно с помощью Поиска решения подобрать.
Если надо многократно, записать макрорекодером

Спасибо за ответ.
Да, нужно многократно. Макрорекордером ниразу не пользовался, подскажите?
 
Ответить
Сообщение
Можно с помощью Поиска решения подобрать.
Если надо многократно, записать макрорекодером

Спасибо за ответ.
Да, нужно многократно. Макрорекордером ниразу не пользовался, подскажите?

Автор - enjoymeforever
Дата добавления - 05.11.2018 в 15:32
InExSu Дата: Понедельник, 05.11.2018, 15:32 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!

Поиска решения


Там нет Джавдета шага.

Во вложении.
К сообщению приложен файл: InExSu.xlsb (19.5 Kb)


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac

Сообщение отредактировал InExSu - Понедельник, 05.11.2018, 15:53
 
Ответить
СообщениеПривет!

Поиска решения


Там нет Джавдета шага.

Во вложении.

Автор - InExSu
Дата добавления - 05.11.2018 в 15:32
enjoymeforever Дата: Понедельник, 05.11.2018, 15:46 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Т.е. логика такова:
Если значение в ячейке 2-1 меньше 10, то к ячейке 1-1 прибавить 1 и повторять до тех пор, пока условие не выполнится.
 
Ответить
СообщениеТ.е. логика такова:
Если значение в ячейке 2-1 меньше 10, то к ячейке 1-1 прибавить 1 и повторять до тех пор, пока условие не выполнится.

Автор - enjoymeforever
Дата добавления - 05.11.2018 в 15:46
Pelena Дата: Понедельник, 05.11.2018, 15:50 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Там нет Джавдета шага

Если задать ограничения "Целое" и "неотрицательное" будет шаг 1. Нет?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Там нет Джавдета шага

Если задать ограничения "Целое" и "неотрицательное" будет шаг 1. Нет?

Автор - Pelena
Дата добавления - 05.11.2018 в 15:50
InExSu Дата: Понедельник, 05.11.2018, 15:54 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Нет?

Пардон. Да.


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Нет?

Пардон. Да.

Автор - InExSu
Дата добавления - 05.11.2018 в 15:54
boa Дата: Понедельник, 05.11.2018, 18:36 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Если уж через пользовательскую функцию, то можно так:
[vba]
Код
Function KOEF(Изменяемая As Range, Контрольная As Range, Шаг, МахЗнач)
Dim x#: x = 0
    Do While Application.Evaluate(Replace(Контрольная.Formula, Изменяемая.Address(0, 0), Replace(CStr(Изменяемая.Value + x), ",", "."))) <= МахЗнач
        x = x + Шаг
    Loop
KOEF = x / Шаг
End Function
[/vba]
Функция вернет коэффициент, который надо будет прибавить к первому числу ("Изменяемая")
и, подразумевается, что в формуле("Контрольная ") используются относительные ссылки.


 
Ответить
СообщениеЕсли уж через пользовательскую функцию, то можно так:
[vba]
Код
Function KOEF(Изменяемая As Range, Контрольная As Range, Шаг, МахЗнач)
Dim x#: x = 0
    Do While Application.Evaluate(Replace(Контрольная.Formula, Изменяемая.Address(0, 0), Replace(CStr(Изменяемая.Value + x), ",", "."))) <= МахЗнач
        x = x + Шаг
    Loop
KOEF = x / Шаг
End Function
[/vba]
Функция вернет коэффициент, который надо будет прибавить к первому числу ("Изменяемая")
и, подразумевается, что в формуле("Контрольная ") используются относительные ссылки.

Автор - boa
Дата добавления - 05.11.2018 в 18:36
boa Дата: Среда, 07.11.2018, 10:23 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Во вложении файл с пользовательской функцией из предыдущего поста.

P.S.
Хотя, если рассматривать, что в ячейке "2-1" формула (как в примере) A1/7, то коэффициент можно найти без итераций.

(A1 + X * Step) / 7 > Max , где A1 - ячейка с исходной цифрой (17), X - искомый коэффициент, Max - Предел для считаемого результата (в примере = 10), Step - Шаг итераций (в примере = 1)
тогда
X > (7 * Max - A1) / Step
X > (7 * 10 - 17) / 1
Ответ: X > 53, т.е. следующее число после 53 с шагом Step.
53 + 1 = 54
К сообщению приложен файл: 6965332.xlsb (16.6 Kb)




Сообщение отредактировал boa - Среда, 07.11.2018, 12:14
 
Ответить
СообщениеВо вложении файл с пользовательской функцией из предыдущего поста.

P.S.
Хотя, если рассматривать, что в ячейке "2-1" формула (как в примере) A1/7, то коэффициент можно найти без итераций.

(A1 + X * Step) / 7 > Max , где A1 - ячейка с исходной цифрой (17), X - искомый коэффициент, Max - Предел для считаемого результата (в примере = 10), Step - Шаг итераций (в примере = 1)
тогда
X > (7 * Max - A1) / Step
X > (7 * 10 - 17) / 1
Ответ: X > 53, т.е. следующее число после 53 с шагом Step.
53 + 1 = 54

Автор - boa
Дата добавления - 07.11.2018 в 10:23
enjoymeforever Дата: Среда, 07.11.2018, 16:49 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не получается самостоятельно, если кто готов помочь не безвозмездно, пишите цену, обсудим.
Модераторам: прошу перенести цену в фриланс.
 
Ответить
СообщениеНе получается самостоятельно, если кто готов помочь не безвозмездно, пишите цену, обсудим.
Модераторам: прошу перенести цену в фриланс.

Автор - enjoymeforever
Дата добавления - 07.11.2018 в 16:49
boa Дата: Среда, 07.11.2018, 21:16 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
enjoymeforever,
Прикрутить к вшему файлу то, что в данной теме описано, я вам помогу за даром.
Если файл большой, его можно сжать архиватором и поделить на тома по 100кб, что бы приатачить к сообщению.
Остается вопрос конфиденциальности данных. Вам решать.


 
Ответить
Сообщениеenjoymeforever,
Прикрутить к вшему файлу то, что в данной теме описано, я вам помогу за даром.
Если файл большой, его можно сжать архиватором и поделить на тома по 100кб, что бы приатачить к сообщению.
Остается вопрос конфиденциальности данных. Вам решать.

Автор - boa
Дата добавления - 07.11.2018 в 21:16
boa Дата: Среда, 07.11.2018, 21:21 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Цитата enjoymeforever, 07.11.2018 в 16:49, в сообщении № 10 ()
Модераторам: прошу перенести цену в фриланс.
*тему

enjoymeforever,
Создайте тему на фрилансе, а здесь оставьте ссылку.

P.S. упс, а тема уже перенесена :)




Сообщение отредактировал boa - Среда, 07.11.2018, 21:25
 
Ответить
Сообщение
Цитата enjoymeforever, 07.11.2018 в 16:49, в сообщении № 10 ()
Модераторам: прошу перенести цену в фриланс.
*тему

enjoymeforever,
Создайте тему на фрилансе, а здесь оставьте ссылку.

P.S. упс, а тема уже перенесена :)

Автор - boa
Дата добавления - 07.11.2018 в 21:21
boa Дата: Среда, 07.11.2018, 21:29 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
enjoymeforever,
Раз тема перенесена,
то можете файл где-то на облаке положить, а ссылку на boa "@" ya.ru прислать




Сообщение отредактировал boa - Среда, 07.11.2018, 21:39
 
Ответить
Сообщениеenjoymeforever,
Раз тема перенесена,
то можете файл где-то на облаке положить, а ссылку на boa "@" ya.ru прислать

Автор - boa
Дата добавления - 07.11.2018 в 21:29
enjoymeforever Дата: Понедельник, 12.11.2018, 10:28 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вопрос решен, всем спасибо.
 
Ответить
СообщениеВопрос решен, всем спасибо.

Автор - enjoymeforever
Дата добавления - 12.11.2018 в 10:28
китин Дата: Понедельник, 12.11.2018, 10:49 | Сообщение № 15
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Цитата enjoymeforever, 12.11.2018 в 10:28, в сообщении № 14 ()
Вопрос решен

интересно кем?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Цитата enjoymeforever, 12.11.2018 в 10:28, в сообщении № 14 ()
Вопрос решен

интересно кем?

Автор - китин
Дата добавления - 12.11.2018 в 10:49
boa Дата: Понедельник, 12.11.2018, 11:02 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
интересно кем?

может сам ..., перечитав тему


 
Ответить
Сообщение
интересно кем?

может сам ..., перечитав тему

Автор - boa
Дата добавления - 12.11.2018 в 11:02
Мир MS Excel » Работа и общение » Работа / Фриланс » Расчет ячейки с использованием Function VBA (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!