Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
1
Excel

Как писать формулы в VBA и их вычислять?

28.06.2019, 16:04. Показов 12943. Ответов 7

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть файл там основная формула: 10+ЕСЛИ(F100=$ALR$100;0;(AMB2506*2)-10)
остальные формул похожие, только рядом с другими диапазонами работают.
Так вот как такую формулу превратить в VBA, чтобы вычиcлять методом VBA.
Решил обратить к VBA, т.к. исчерпал возможности EXCEL. если в Excel сделать таких формул на 100тыс строк и 1тыс столбцов, то время вычисления сильно увеличивается и что самое главное размер файла увеличивается, и потом этот файл просто не открыть, так как не хватает оперативной памяти. Поэтому и решил обратить к VBA, чтобы возможно ускорить вычисления и уменьшить объём книги, за счёт того, что формул не будет, а будет методом VBA вычисляться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2019, 16:04
Ответы с готовыми решениями:

Можно ли как определить как писать формулы в яцейки из VBA по русски или английски?
в общем проблема в том можно ли как определить как писать формулы в яцейки из VBA по русски или...

Подскажите,как мне здесь формулы свои писать?
Есть какое-то приложение для Word,где можно писать математические формулы. Подскажите пожалуйста....

Как можно в Excel, в VBA писать команды на SQL?
Как можно в Excel, в VBA писать команды на SQL, обрабатывая таблицы из Access? Я вроде подключил...

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

7
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
28.06.2019, 21:15 2
Вашу формулу можно переписать так :

Код
=ЕСЛИ(F100=$ALR$100;10;AMB2506*2)
А вычислить (без ввода в ячейку), можно например так :

Visual Basic
1
2
f = "IF(F100=ALR100,10,AMB2506*2)"
MsgBox Evaluate(f)
или так (без формулы)

Visual Basic
1
2
3
4
5
If Range("F100") = Range("ALR100") Then
   MsgBox 10
Else
   MsgBox Range("AMB2506") * 2
End If
Разумеется, при 100т. строк имеет смысл не обращаться к об'ектам Range/Cells, а работать с массивом.
0
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
28.06.2019, 23:16  [ТС] 3
pashulka, а вы можете помочь мне запихнуть все эти 100тыс строк формул в массив? я это делать не умею к сожалению.
файл примера если надо я пришлю вам.


а тут
Visual Basic
1
2
3
4
5
If Range("F100") = Range("ALR100") Then
   MsgBox 10
Else
   MsgBox Range("AMB2506") * 2
End If
выскакивает какое то окошко, но в ячейку ничего не проставляется

Добавлено через 5 минут
pashulka, и нужно именно так как я указал в формуле: 10+ЕСЛИ(F100=$ALR$100;0;(AMB2506*2)-10).
просто вы не видели файл и не поняли суть вычисления. по вашей упрощённой формуле будет совсем другой результат при дальнейших вычислениях.

Добавлено через 1 час 20 минут
pashulka, хотя проверил только что. результат с формулой =ЕСЛИ(F100=$ALR$100;10;AMB2506*2) одинаковый.
но это не решило проблему.
0
3917 / 2315 / 784
Регистрация: 02.11.2012
Сообщений: 6,158
29.06.2019, 08:10 4
Цитата Сообщение от Erolim Посмотреть сообщение
выскакивает какое то окошко, но в ячейку ничего не проставляется
естественно, в коде так и написано. читаем справку про MsgBox.
Цитата Сообщение от Erolim Посмотреть сообщение
файл примера если надо я пришлю вам
Цепляйте маленький пример (строк 10) сюда.
0
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
29.06.2019, 11:10  [ТС] 5
Vlad999, чуть больше чем 10 строк. внутри файла макросы Test0 и Test1. Сначала нажать Test0, потом Test1 и далее нажимать только Test1. увидите результат, по такому принципу должен работать и массив, сначала вычисляя диапазон AMB100:BYM2499, а потом AMB2506:BYM4905. Ну в общем по последовательности макроса Test1, только формулы заменить массивом.
Вложения
Тип файла: rar для_примера.rar (2.31 Мб, 18 просмотров)
0
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
04.07.2019, 21:02  [ТС] 6
Здравствуйте. не ужели никто помочь не может?
хотя бы как написать формулу =ЕСЛИ(F100=$ALR$100;10;AMB2506*2) в VBA, что бы она вычисляла и в ячейку ABM100 ставила уже результат.
0
Часто онлайн
917 / 620 / 276
Регистрация: 09.01.2017
Сообщений: 2,052
05.07.2019, 01:33 7
Erolim, конкретно для этой формулы и именно для столбца "АМВ100" так:

Visual Basic
1
Sheets("Главный").Cells(100, Columns("AMB").Column).FormulaLocal = "=ЕСЛИ(F100=$ALR$100;10;AMB2506*2)"
0
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
05.07.2019, 02:46  [ТС] 8
мне не надо вставлять формулу в ячейку, мне нужно уже готовое вычисление вставлять.

Добавлено через 1 час 9 минут
КостяФедореев, при том ещё, и написан ваш код неверно. выдаёт ошибку.
0
05.07.2019, 02:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2019, 02:46
Помогаю со студенческими работами здесь

Какими тэгами писать формулы?
Всем привет! Подскажите пожалуйста с какими тегами писать формулы? При вставке из офиса получается...

А в автокаде можно писать формулы к рисунку ?
Что то типо АВТОКАД + MATHTYPE ?? или ни как ??

Какое расширение поставить, чтобы писать математические формулы на картинке?
Хотел сделать каптчу-задачку, но нужно как-то нарисовать формулы на картинке. В стандартном GD...

Можно ли писать на VBA в OpenOffice
Есть программа, которая экспортирует в excel через макросы. Т.е. просто запускается определенный...

Из VBA в Делфи (писать в файл Word).
Прошу помощи у всех, кто разбирается в данном вопросе. есть документ Word. В тексте добавлены...

Формулы в VBA
Помогите пожалуйста. Никак не получается ввести код на 2 формулы в VBA,перепробовала все, хоть и не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru