Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2018, 10:56   #1
chutnesdoh
Новичок
Джуниор
 
Регистрация: 28.03.2018
Сообщений: 1
По умолчанию Массив с вариантами уравнений(формул)

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

Итак, имеются несколько переменных значений(чисел), которые можно вставить в уравнение и найти x
Например:
a = 1
b = 2
c = 3
d = 4
x = a+b+c+d = 1+2+3+4 = 10

Тот же x можно найти и таким уравнением:
x = a*b*c+d = 1*2*3+4 = 10

1. Задача забить массив вариантами(или определённым числом вариантов) уравнений
для известных переменных после того, когда x найден для первого уравнения.

Ведь проблема в том(например), что при:
a = 4
b = 3
c = 2
d = 1
x = a+b+c+d = 4+3+2+1 = 10

Тот же x нельзя найти таким уравнением:
x = a*b*c+d = 4*3*2+1 = 25

2. Забить другой массив вариантами уравнений для других значений переменных.


3. Найти моду или наиболее часто встречающееся уравнение из списка массивов.
chutnesdoh вне форума Ответить с цитированием
Старый 29.03.2019, 18:06   #2
СтаниславАВ
Форумчанин
 
Регистрация: 10.10.2010
Сообщений: 107
По умолчанию Массив в vba

Добрый день. Может кто из знатоков подскажет, как мне ускорить работу макроса.
Имеются три таблицы на разных листах.
Из двух таблиц данные подтягиваются в основную, а из основной обратно в оставшиеся две.
Основная таблица A13:BX6000
Столбцу E13:E6000 присвоил имя "Smeta_mat_volume" и считаю:
With Range("Smeta_mat_volume")
.Formula = "=IF(AND(RC[16]=""да"",OR(RC[70]=R4C22,R4C22=R20C[73])),ROUNDUP(RC[10]*RC[11],0),0)*IF(INDEX(Smeta_contractor_al l_works,MATCH(Smeta_contractor_fini sh,Smeta_all_contractor,0),MATCH(RC 76,Smeta_contractor_works,0))=""да" ",1,0)"
.Calculate
.Value = .Value
End With
Столбцу F13:F6000 присвоил имя "Smeta_mat_price" и считаю:
With Range("Smeta_mat_price")
.Formula = "=SUMIFS(Materials_price,Materials_ name,RC[-3])"
.Calculate
.Value = .Value
End With
Столбец имеющий имя Materials_price с другого листа
Необходимо диапазону дать имя, скопировать в массив и из этого массива брать данные только из 3 столбца
Столбец имеющий имя Materials_name с третьего листа
Необходимо диапазону дать имя, скопировать в массив и из этого массива брать данные только из 4 столбца

Столбцу G13:G6000 присвоил имя "Smeta_mat_summa" и считаю:
With Range("Smeta_mat_summa")
.Formula = "=ROUND(RC[-2]*RC[-1],2)"
.Calculate
.Value = .Value
End With

Это все занимает очень много времени

Хотел бы таблице A13:BX6000 дать имя, скопировать данные в массив
Расчеты произвести в нем и выгрузить на лист только нужную информацию.
СтаниславАВ вне форума Ответить с цитированием
Старый 29.03.2019, 19:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

СтаниславАВ, простите, а какое отношение ваш пост имеет к данной теме? К сообщению из пост #1?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2019, 19:21   #4
СтаниславАВ
Форумчанин
 
Регистрация: 10.10.2010
Сообщений: 107
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
СтаниславАВ, простите, а какое отношение ваш пост имеет к данной теме? К сообщению из пост #1?
У меня тоже Массив с вариантами уравнений(формул)
СтаниславАВ вне форума Ответить с цитированием
Старый 29.03.2019, 19:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от СтаниславАВ Посмотреть сообщение
У меня тоже Массив с вариантами уравнений(формул)
возможно.
Только непонятно, кому в данной теме теперь будут отвечать - Вам или ТС..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2019, 20:02   #6
СтаниславАВ
Форумчанин
 
Регистрация: 10.10.2010
Сообщений: 107
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
возможно.
Только непонятно, кому в данной теме теперь будут отвечать - Вам или ТС..
Там с марта 2018 ни кто не ответил. Может мне ответят )))
СтаниславАВ вне форума Ответить с цитированием
Старый 29.03.2019, 22:08   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

СтаниславАВ,
вопрос описан лаконично и доступно и показался кому-то интересным - обязательно ответят
вопрос написан "лишь бы как" и вообще не понятен никому, кроме автора, наивно ждать на него вала ответов и даже обсуждения (уточнений сути вопроса)
темы, где автор просто поленился описать задачу корректно, а еще хуже не понимает, что его описание никто не поймет я просто обхожу сторонй.
не знаю какими соображениями руководствуются другие, а у меня обычно возникает такая мысль:
ему облом описать свою задачу! зачем мне парится и выспрашивать, а что, собственно, тут нужно решить?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 29.03.2019 в 22:15.
IgorGO вне форума Ответить с цитированием
Старый 30.03.2019, 10:21   #8
СтаниславАВ
Форумчанин
 
Регистрация: 10.10.2010
Сообщений: 107
По умолчанию

Я диапазону A13:BX6000 присвоил имя "Smeta"
Далее заношу её в массив
VB_Smeta = Range("Smeta").Value
В 5 столбце массива мне надо рассчитать формулу
=IF(AND(RC[16]=""да"",OR(RC[70]=R4C22,R4C22=R20C[73])),ROUNDUP(RC[10]*RC[11],0),0)*IF(INDEX(Smeta_contractor_al l_works,MATCH(Smeta_contractor_fini sh,Smeta_all_contractor,0),MATCH(RC 76,Smeta_contractor_works,0))=""да" ",1,0)
На этом возникает затык, как можно прописать.
Спасибо.
СтаниславАВ вне форума Ответить с цитированием
Старый 30.03.2019, 13:42   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от СтаниславАВ Посмотреть сообщение
Столбцу E13:E6000 присвоил имя "Smeta_mat_volume" и считаю
В таблице действительно заняты все ~6000 строк? можно ограничить расчеты фактически занятыми диапазонами.
Вам не кажется, что чтобы что-либо делать с вашим кодом, нужен файл со всеми именами листов и диапазонов, и с примерными данными? 6000 строк, разумеется, не нужно, но должны быть данные и которые находятся, и которые не находятся.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 30.03.2019 в 13:59.
Казанский вне форума Ответить с цитированием
Старый 30.03.2019, 15:02   #10
СтаниславАВ
Форумчанин
 
Регистрация: 10.10.2010
Сообщений: 107
По умолчанию

Файл не проблема. Разбираться в нем не просто. Макрос с именем Smeta
Вложения
Тип файла: rar Смета.rar (3.28 Мб, 7 просмотров)
СтаниславАВ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись с вариантами andrei_belko Паскаль, Turbo Pascal, PascalABC.NET 2 03.06.2014 17:12
Записи вариантами. alexeu121 Паскаль, Turbo Pascal, PascalABC.NET 7 28.05.2014 10:26
Записи с вариантами megabobik Помощь студентам 0 31.01.2010 16:17
Запись с вариантами Rusl92 Помощь студентам 1 14.11.2009 10:27
MainMenu с вариантами beegl Компоненты Delphi 4 08.06.2008 12:09