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

Вход

Регистрация

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

 

= Мир MS Excel/Создание формулы с запросом ввода данных в нее - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Создание формулы с запросом ввода данных в нее (Формулы/Formulas)
Создание формулы с запросом ввода данных в нее
McBorsch Дата: Пятница, 24.11.2017, 13:21 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день, есть данная формула и хочу сделать так, что бы можно было ее вставлять в любую ячейку и при этом происходил запрос D, La, E (например в форме всплывающего окна), возможно ли такое реализовать?

Например, писать =кайтц("значение D"; "значение La"; "значение E") или просто =кайтц, а тебе выдает всплывающее окно с полями по эти параметры
Заранее спасибо за ответы!


Сообщение отредактировал McBorsch - Пятница, 24.11.2017, 13:22
 
Ответить
СообщениеДобрый день, есть данная формула и хочу сделать так, что бы можно было ее вставлять в любую ячейку и при этом происходил запрос D, La, E (например в форме всплывающего окна), возможно ли такое реализовать?

Например, писать =кайтц("значение D"; "значение La"; "значение E") или просто =кайтц, а тебе выдает всплывающее окно с полями по эти параметры
Заранее спасибо за ответы!

Автор - McBorsch
Дата добавления - 24.11.2017 в 13:21
K-SerJC Дата: Пятница, 24.11.2017, 16:00 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
формула
Код
=fr()


код в стандартный модуль
[vba]
Код
Function fr()
Dim D_, E_, A_, La_
D_ = InputBox("D", , 0.5)
E_ = InputBox("E", , 1)
La_ = InputBox("La", , 0.465)
A_ = 0.104
fr = (2 * E_ * (Pi ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]

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


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Пятница, 24.11.2017, 16:02
 
Ответить
Сообщениеформула
Код
=fr()


код в стандартный модуль
[vba]
Код
Function fr()
Dim D_, E_, A_, La_
D_ = InputBox("D", , 0.5)
E_ = InputBox("E", , 1)
La_ = InputBox("La", , 0.465)
A_ = 0.104
fr = (2 * E_ * (Pi ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]

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

Автор - K-SerJC
Дата добавления - 24.11.2017 в 16:00
McBorsch Дата: Понедельник, 27.11.2017, 08:47 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за ответ.
Однако формула по какой-то причине не работает. Макрос записал, ввожу =fr(, запрашивает данные, выдает результат - всегда 0. Какие бы данные ни ввел. Формулу проверил уже. Есть идеи, почему так может быть?

И сразу еще один вопрос, как можно прописать в макросе, что бы вычисленное значение после расчета форматировалось из формулы в число?

Заранее спасибо!


Сообщение отредактировал McBorsch - Понедельник, 27.11.2017, 08:58
 
Ответить
СообщениеСпасибо за ответ.
Однако формула по какой-то причине не работает. Макрос записал, ввожу =fr(, запрашивает данные, выдает результат - всегда 0. Какие бы данные ни ввел. Формулу проверил уже. Есть идеи, почему так может быть?

И сразу еще один вопрос, как можно прописать в макросе, что бы вычисленное значение после расчета форматировалось из формулы в число?

Заранее спасибо!

Автор - McBorsch
Дата добавления - 27.11.2017 в 08:47
_Boroda_ Дата: Понедельник, 27.11.2017, 09:11 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если так?
[vba]
Код
fr = (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если так?
[vba]
Код
fr = (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
[/vba]

Автор - _Boroda_
Дата добавления - 27.11.2017 в 09:11
McBorsch Дата: Понедельник, 27.11.2017, 10:10 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за ответы, разобрался с причинами.
1. Pi он не читает, ввел 3.14 - все заработало
2. Значения D, E и La в макросе нужно устанавливать максимально допустимые при расчетах. При данном выше варианте макроса, если ввести D>0.5, выводит в ячейке #ЗНАЧ! ну и т.д.

Осталось только понять, как в макрос добавить действие по переводу вычисленной формулы в число
 
Ответить
СообщениеСпасибо за ответы, разобрался с причинами.
1. Pi он не читает, ввел 3.14 - все заработало
2. Значения D, E и La в макросе нужно устанавливать максимально допустимые при расчетах. При данном выше варианте макроса, если ввести D>0.5, выводит в ячейке #ЗНАЧ! ну и т.д.

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

Автор - McBorsch
Дата добавления - 27.11.2017 в 10:10
_Boroda_ Дата: Понедельник, 27.11.2017, 10:21 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
1. Pi он не читает, ввел 3.14 - все заработало

Я Вам как раз именно это и сделал в предыдущем посте. Только не 3,14, а полное число Пи
При данном выше варианте макроса, если ввести D>0.5, выводит в ячейке #ЗНАЧ!
У меня выводит все нормально. Вы ввыдите через точку или через запятую? Нужно через запятую

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


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
1. Pi он не читает, ввел 3.14 - все заработало

Я Вам как раз именно это и сделал в предыдущем посте. Только не 3,14, а полное число Пи
При данном выше варианте макроса, если ввести D>0.5, выводит в ячейке #ЗНАЧ!
У меня выводит все нормально. Вы ввыдите через точку или через запятую? Нужно через запятую

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

Автор - _Boroda_
Дата добавления - 27.11.2017 в 10:21
McBorsch Дата: Понедельник, 27.11.2017, 10:52 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я Вам как раз именно это и сделал в предыдущем посте. Только не 3,14, а полное число Пи
да, я уже понял, спасибо
У меня выводит все нормально. Вы ввыдите через точку или через запятую? Нужно через запятую
ввожу через запятую
У Вас не макрос, а UDF-ка, она не может сама себя стереть и записаться числом
ну, буду по-старинке ctrl-c -> ctrl-v %)

Решил изменить имя формулы с fr на кайтц, перестал считать ее. в строке формулы "=кайтц()", в ячейке "#ИМЯ?".
Нельза на русской название функции задавать?


Сообщение отредактировал McBorsch - Понедельник, 27.11.2017, 10:57
 
Ответить
Сообщение
Я Вам как раз именно это и сделал в предыдущем посте. Только не 3,14, а полное число Пи
да, я уже понял, спасибо
У меня выводит все нормально. Вы ввыдите через точку или через запятую? Нужно через запятую
ввожу через запятую
У Вас не макрос, а UDF-ка, она не может сама себя стереть и записаться числом
ну, буду по-старинке ctrl-c -> ctrl-v %)

Решил изменить имя формулы с fr на кайтц, перестал считать ее. в строке формулы "=кайтц()", в ячейке "#ИМЯ?".
Нельза на русской название функции задавать?

Автор - McBorsch
Дата добавления - 27.11.2017 в 10:52
McBorsch Дата: Понедельник, 27.11.2017, 11:02 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
пока "UDF-ка" имеет такой вот вид:

[vba]
Код
Function fr()
Dim D_, E_, A_, La_
D_ = InputBox("Расстояние от оси лампы до торца датика в метрах", , 10)
E_ = InputBox("Мощность потока излучения УФ в Вт/м2", , 10)
La_ = InputBox("Межэлектродное расстояние в метрах", , 10)
A_ = 0.104
fr = (2 * E_ * (WorksheetFunction.Pi() ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]


Сообщение отредактировал McBorsch - Понедельник, 27.11.2017, 11:12
 
Ответить
Сообщениепока "UDF-ка" имеет такой вот вид:

[vba]
Код
Function fr()
Dim D_, E_, A_, La_
D_ = InputBox("Расстояние от оси лампы до торца датика в метрах", , 10)
E_ = InputBox("Мощность потока излучения УФ в Вт/м2", , 10)
La_ = InputBox("Межэлектродное расстояние в метрах", , 10)
A_ = 0.104
fr = (2 * E_ * (WorksheetFunction.Pi() ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]

Автор - McBorsch
Дата добавления - 27.11.2017 в 11:02
K-SerJC Дата: Понедельник, 27.11.2017, 11:03 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Решил изменить имя формулы с fr на кайтц,


[vba]
Код

Function КАЙТЦ()
Dim D_, E_, A_, La_
D_ = InputBox("D", , 0.5)
E_ = InputBox("E", , 1)
La_ = InputBox("La", , 0.465)
A_ = 0.104
КАЙТЦ= (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]

так поменяли?
или только в ячейке?

имя функции задается в коде, а в ячейке вы её по этому имени вызываете
а вот эта строчка собсвенно делает расчет и присваивает вычисленное значение функции, которое затем отображается в ячейке
[vba]
Код
КАЙТЦ= (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
[/vba]


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Понедельник, 27.11.2017, 11:16
 
Ответить
Сообщение
Решил изменить имя формулы с fr на кайтц,


[vba]
Код

Function КАЙТЦ()
Dim D_, E_, A_, La_
D_ = InputBox("D", , 0.5)
E_ = InputBox("E", , 1)
La_ = InputBox("La", , 0.465)
A_ = 0.104
КАЙТЦ= (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]

так поменяли?
или только в ячейке?

имя функции задается в коде, а в ячейке вы её по этому имени вызываете
а вот эта строчка собсвенно делает расчет и присваивает вычисленное значение функции, которое затем отображается в ячейке
[vba]
Код
КАЙТЦ= (2 * E_ * WorksheetFunction.Pi() ^ 2 * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
[/vba]

Автор - K-SerJC
Дата добавления - 27.11.2017 в 11:03
McBorsch Дата: Понедельник, 27.11.2017, 11:07 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
имя функции задается в коде, а в ячейке вы её по этому имени вызываете
а вот эта строчка собсвенно делает расчет и присваивает вычисленное значение функции, которое затем отображается в ячейке


понял ошибку, изменил только в заголовке кода fr на кайтц.

Спасибо =)

Изменил, как Вы описали, и все равно в ячейке появляется #ИМЯ?
Т.е. при таком коде:
[vba]
Код
Function КАЙТЦ()
Dim D_, E_, A_, La_
D_ = InputBox("Расстояние от оси лампы до торца датика в метрах", , 10)
E_ = InputBox("Мощность потока излучения УФ в Вт/м2", , 10)
La_ = InputBox("Межэлектродное расстояние в метрах", , 10)
A_ = 0.104
КАЙТЦ = (2 * E_ * (WorksheetFunction.Pi() ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]
и вводе =КАЙТЦ() выдает в ячейке #ИМЯ?


Сообщение отредактировал McBorsch - Понедельник, 27.11.2017, 11:12
 
Ответить
Сообщение
имя функции задается в коде, а в ячейке вы её по этому имени вызываете
а вот эта строчка собсвенно делает расчет и присваивает вычисленное значение функции, которое затем отображается в ячейке


понял ошибку, изменил только в заголовке кода fr на кайтц.

Спасибо =)

Изменил, как Вы описали, и все равно в ячейке появляется #ИМЯ?
Т.е. при таком коде:
[vba]
Код
Function КАЙТЦ()
Dim D_, E_, A_, La_
D_ = InputBox("Расстояние от оси лампы до торца датика в метрах", , 10)
E_ = InputBox("Мощность потока излучения УФ в Вт/м2", , 10)
La_ = InputBox("Межэлектродное расстояние в метрах", , 10)
A_ = 0.104
КАЙТЦ = (2 * E_ * (WorksheetFunction.Pi() ^ 2) * D_ * La_ * 0.86) / (2 * A_ + Sin(2 * A_))
End Function
[/vba]
и вводе =КАЙТЦ() выдает в ячейке #ИМЯ?

Автор - McBorsch
Дата добавления - 27.11.2017 в 11:07
K-SerJC Дата: Понедельник, 27.11.2017, 11:13 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
и все равно в ячейке появляется #ИМЯ?

файл свой приложите, у меня отрабатывает


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
и все равно в ячейке появляется #ИМЯ?

файл свой приложите, у меня отрабатывает

Автор - K-SerJC
Дата добавления - 27.11.2017 в 11:13
McBorsch Дата: Понедельник, 27.11.2017, 11:16 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
файл свой приложите, у меня отрабатывает
только что создал новую книгу, вставил UDF туда, работает все, а в старой книге - нет
код абсолютно одинаковый

Извините, разобрался, была ошибочка


Сообщение отредактировал McBorsch - Понедельник, 27.11.2017, 11:18
 
Ответить
Сообщение
файл свой приложите, у меня отрабатывает
только что создал новую книгу, вставил UDF туда, работает все, а в старой книге - нет
код абсолютно одинаковый

Извините, разобрался, была ошибочка

Автор - McBorsch
Дата добавления - 27.11.2017 в 11:16
McBorsch Дата: Понедельник, 27.11.2017, 11:19 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем большущее спасибо!!

Если невозможно преобразовать после вычисления формулу в ее результат (или сделать не UDF, а макрос или еще как-то), то тему можно закрыть!

Еще раз огромное спасибо =)
 
Ответить
СообщениеВсем большущее спасибо!!

Если невозможно преобразовать после вычисления формулу в ее результат (или сделать не UDF, а макрос или еще как-то), то тему можно закрыть!

Еще раз огромное спасибо =)

Автор - McBorsch
Дата добавления - 27.11.2017 в 11:19
K-SerJC Дата: Понедельник, 27.11.2017, 12:10 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Если невозможно преобразовать после вычисления формулу в ее результат

если добавить такой код на лист
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.FormulaR1C1 = "=КАЙТЦ()" Then Target.FormulaR1C1 = Target.Value
Application.EnableEvents = True
End Sub
[/vba]
то вместо формулы в ячейке будете получать расчетные данные


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
Если невозможно преобразовать после вычисления формулу в ее результат

если добавить такой код на лист
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.FormulaR1C1 = "=КАЙТЦ()" Then Target.FormulaR1C1 = Target.Value
Application.EnableEvents = True
End Sub
[/vba]
то вместо формулы в ячейке будете получать расчетные данные

Автор - K-SerJC
Дата добавления - 27.11.2017 в 12:10
McBorsch Дата: Понедельник, 27.11.2017, 12:33 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
то вместо формулы в ячейке будете получать расчетные данные
Спасибище =)

Все, теперь точно можно закрывать тему =)
 
Ответить
Сообщение
то вместо формулы в ячейке будете получать расчетные данные
Спасибище =)

Все, теперь точно можно закрывать тему =)

Автор - McBorsch
Дата добавления - 27.11.2017 в 12:33
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Создание формулы с запросом ввода данных в нее (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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