|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.03.2018, 10:56 | #1 |
Новичок
Джуниор
Регистрация: 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. Найти моду или наиболее часто встречающееся уравнение из списка массивов. |
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 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
СтаниславАВ, простите, а какое отношение ваш пост имеет к данной теме? К сообщению из пост #1?
|
29.03.2019, 19:21 | #4 |
Форумчанин
Регистрация: 10.10.2010
Сообщений: 107
|
|
29.03.2019, 19:46 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
29.03.2019, 20:02 | #6 |
Форумчанин
Регистрация: 10.10.2010
Сообщений: 107
|
|
29.03.2019, 22:08 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
СтаниславАВ,
вопрос описан лаконично и доступно и показался кому-то интересным - обязательно ответят вопрос написан "лишь бы как" и вообще не понятен никому, кроме автора, наивно ждать на него вала ответов и даже обсуждения (уточнений сути вопроса) темы, где автор просто поленился описать задачу корректно, а еще хуже не понимает, что его описание никто не поймет я просто обхожу сторонй. не знаю какими соображениями руководствуются другие, а у меня обычно возникает такая мысль: ему облом описать свою задачу! зачем мне парится и выспрашивать, а что, собственно, тут нужно решить?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 29.03.2019 в 22:15. |
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
|
В таблице действительно заняты все ~6000 строк? можно ограничить расчеты фактически занятыми диапазонами.
Вам не кажется, что чтобы что-либо делать с вашим кодом, нужен файл со всеми именами листов и диапазонов, и с примерными данными? 6000 строк, разумеется, не нужно, но должны быть данные и которые находятся, и которые не находятся.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Последний раз редактировалось Казанский; 30.03.2019 в 13:59. |
30.03.2019, 15:02 | #10 |
Форумчанин
Регистрация: 10.10.2010
Сообщений: 107
|
Файл не проблема. Разбираться в нем не просто. Макрос с именем Smeta
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись с вариантами | 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 |