Страницы: 1
RSS
Минимум по нескольким условиям тормозит
 
Здравствуйте, форумчане. Есть формула массива:  
=МИН(ЕСЛИ((ЕСЛИ(A196="";$B196=База[Номенклатура];$A196=База[Группа]))*(ЕСЛИ($C$1="Контрагент";$B$1=База[Контрагент];$B$1=База[Регион]));База[Дата])). Проблема заключается в том, что вытягивать для трех сотен ячеек данные из таблицы длинной в сто тысяч строк мягко говоря долго. Подскажите, пожалуйста, чем ее можно заменить. Есть подозрение, что VBA станет панацеей, но написать код у меня пока еще не получилось:(
 
Если не ошибся, Ваша формула:  
=МИН(ЕСЛИ(ЕСЛИ(a1;b1;c1)*(ЕСЛИ(a2;b2;c2);d))  
Т.е. все условия задействованы в расчетах.  
Попробуйте обрезать лишние вычисления, построив каскад ЕСЛИ().
 
Все равно слишком долго. Тут дело в том, что помимо минимального, требуется еще и суммировать по периодам (по аналогичному алгоритму) Суммесли, суммпроизв, {сумм(если)} - все они очень долго думают. Поэтому хотелось увидеть алгоритм VBA и его уже приобщить под суммирование
 
off Пора, имхо, с вашими объемами и запросами (потребностями)испытать Access иль xmk еще покручее...:)
 
Это вы от меня так сдыхаться пытаетесь?:)    
В принципе-то как стал переводить часть расчетов в VBA то жить стало намного легче, но вот на эту задачу просто не получается сообразить код...
 
Sub khv()  
   For i = 8 To 38  
       If Cells(i, 2) = "" Then  
       x = 1  
       Else: x = 2  
       End If  
   For a = 2 To 1000  
       If Worksheets(2).Cells(a, 5) = [B1].Value And Worksheets(2).Cells(a, 2) = Cells(i, x) Then
               Cells(i, 3) = Application.Min(Worksheets(2).Cells(a, 1))  
       End If  
   Next  
   Next  
End Sub  
 
 
Вот и почему оно не работает?
 
Baklanoff, таки сдыхаемся, если не научитесь правильную кнопочку жать :)  
Кнопка "Ответить" левее. Та, которую все время тискеаете, думаю, знаете, для чего.
Страницы: 1
Наверх