Страницы: 1
RSS
Поиск наибольшей суммы в строке
 
Добрый вечер.  
 
Опираясь вот на эту тему:  
http://www.planetaexcel.ru/forum.php/?thread_id=29031  
попыталась написать формулу, находящую максимальную сумму идущих подряд непустых ячеек.    
 
В результате получилось:  
=MAX(SUMM(COLUMN(С1:S1)-COLUMN(С1)+1;(O5:BN5<>"")*(COLUMN(С1:S1)-COLUMN(С1)+1))-1;INDEX(FREQUENCY(COLUMN(С1:S1)-COLUMN(С1)+1;(С1:S1<>"")*(COLUMN(С1:S1)-COLUMN(С1)+1));COLUMNS(С1:S1)+1)  
 
Подскажите, пожалуйста, где ошибка?  
 
PS  
При этом, вот этот вариант:  
http://www.planetaexcel.ru/forum.php/?thread_id=3377  
не подходит, так как создает лишний столбец. К сожалению, у меня нет возможности создавать доп. строки к каждой из 250 позиций.    
 
PSS    
Я перекопала достаточно много материала на предмет решения моей задачи, однако, даже при схожести вопросов, не нашла решения. Допускаю, что была невнимательна, и, если вы покажете мне нужную тему - буду благодарна.
 
=MAX(FREQUENCY(COLUMN(C1:S1),(C1:S1<>"")*COLUMN(C1:S1))-1,INDEX(FREQUENCY(COLUMN(C1:S1),(C1:S1<>"")*COLUMN(C1:S1)),COLUMNS(C1:S1)+1))
 
{quote}{login=Mathilda}{date=15.07.2011 08:21}{thema=Поиск наибольшей суммы в строке}{post}попыталась написать формулу, находящую максимальную сумму идущих подряд непустых ячеек{/post}{/quote}  
Вверху была для пустых, для непустых замените <> на =:  
=MAX(FREQUENCY(COLUMN(C1:S1),(C1:S1="")*COLUMN(C1:S1))-1,INDEX(FREQUENCY(COLUMN(C1:S1),(C1:S1="")*COLUMN(C1:S1)),COLUMNS(C1:S1)+1))
 
UDF. Разделителями подстрок могут быть не только пустые ячейки, но и содержащие текст:
 
Безымянный,    
 
Добрый день. Спасибо за попытку, но это не решает мою задачу. Написанная вами формула в несколько модифицированном виде уже была предложена ув. vikttur'ом по упомянутой мной в сабже ссылке, и я её, конечно, читала.    
 
{quote}{login=Mathilda}{date=15.07.2011 08:21}{post}максимальную сумму идущих подряд непустых ячеек{/post}{/quote}    
 
Сумму. Не количество.    
 
Казанский,  
 
Простите, не знаю, что такое UDF. Более того, вероятно, вы создали формулу MAXSUM с помощью макроса (что для меня не подходит), так как решение выдает ошибку #NAME?. Увы.
 
> Простите, не знаю, что такое UDF  
 
Яндекс - excel udf - вторая ссылка:  
http://www.excel-vba.ru/chto-umeet-excel/chto-takoe-funkciya-polzovatelyaudf/
 
Понятно.    
 
Пардон, думала, что это некое сокращение слова или фразы (типа UPD), а не инфо по решению вопроса. Увы, UDF мн не подходит.
 
Не то чтобы решил, так - развлёкся..
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Не то чтобы развлекся, так - решил)):  
 
=MAX(SUBTOTAL(9,OFFSET(B1,,TRANSPOSE(COLUMN(A1:R1))-FREQUENCY(COLUMN(C1:S1),(C1:S1="")*COLUMN(C1:S1)),,IF(FREQUENCY(COLUMN(C1:S1),(C1:S1="")*COLUMN(C1:S1))=0,1,FREQUENCY(COLUMN(C1:S1),(C1:S1="")*COLUMN(C1:S1))))))
 
Владимир,    
 
К сожалению, из-за большого количества формул массива Excel "умирает".    
 
DV,    
Полагаю, все запятые следовало заменить точками с запятой. Но даже в этом случае Excel выдает ошибку #REF! Возможно, я что-то не так делаю?
 
{quote}{login=Mathilda}{date=18.07.2011 06:22}{thema=}{post}DV,    
Полагаю, все запятые следовало заменить точками с запятой. Но даже в этом случае Excel выдает ошибку #REF! Возможно, я что-то не так делаю?{/post}{/quote}  
Возможно, смотрите файл:
 
Пригляделся, можно покомпактней сделать:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(B1;;ТРАНСП(СТОЛБЕЦ(A1:R1))-ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1));;1+ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1)))))
 
{quote}{login=DV}{date=18.07.2011 06:50}{thema=}{post}Пригляделся, можно покомпактней сделать:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(B1;;ТРАНСП(СТОЛБЕЦ(A1:R1))-ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1));;1+ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1))))){/post}{/quote}  
Отличное решение.  
Данную задачу нужно было перенести в Избушку, но компактное, и достаточно красивое решение формулами уже есть.  
 
2 Казанский,  
Алексей, UDF не обрабатывает одиночное последнее число.  
Можно сделать небольшое дополнение:  
 
Function MaxSum(r As Range)  
Dim c1 As Range, c2 As Range, i&  
i = r.Columns.Count  
For Each c1 In r  
   i = i - 1  
   If IsNumeric(c1) And Not IsEmpty(c1) And i > 0 Then  
       If c2 Is Nothing Then Set c2 = c1  
   Else  
       If Not c2 Is Nothing Then  
           MaxSum = Application.Max(MaxSum, Application.Sum(Range(c2, c1)))  
           Set c2 = Nothing  
       Else  
           MaxSum = Application.Max(MaxSum, c1)  
       End If  
   End If  
Next  
End Function
 
{quote}{login=DV}{date=18.07.2011 06:50}{thema=}{post}Пригляделся, можно покомпактней сделать:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(B1;;ТРАНСП(СТОЛБЕЦ(A1:R1))-ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1));;1+ЧАСТОТА(СТОЛБЕЦ(C1:S1);(C1:S1="")*СТОЛБЕЦ(C1:S1))))){/post}{/quote}  
или так:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(C1;;ТРАНСП(СТОЛБЕЦ(C1:V1)-3);1;-1-ЧАСТОТА(СТОЛБЕЦ(C1:U1);(C1:U1="")*СТОЛБЕЦ(C1:U1)))))
 
{quote}{login=MCH}{date=19.07.2011 12:32}{thema=Re: }Данную задачу нужно было перенести в Избушку  
...  
или так:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(C1;;ТРАНСП(СТОЛБЕЦ(C1:V1)-3);1;-1-ЧАСТОТА(СТОЛБЕЦ(C1:U1);(C1:U1="")*СТОЛБЕЦ(C1:U1))))){/post}{/quote}  
Да хотел, но слишком длинная изначальная формула была.  
...  
Красиво!
 
{quote}{login=DV}{date=19.07.2011 12:41}{thema=}{post}{quote}{login=MCH}{date=19.07.2011 12:32}{thema=}{post}Данную задачу нужно было перенести в Избушку...  
или так:  
=МАКС(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ(C1;;ТРАНСП(СТОЛБЕЦ(C1:V1)-3);1;-1-ЧАСТОТА(СТОЛБЕЦ(C1:U1);(C1:U1="")*СТОЛБЕЦ(C1:U1))))){/post}{/quote}  
Да хотел, но слишком длинная изначальная формула была.  
...  
Красиво!{/post}{/quote}  
Вроде все правильно с цитированием делаю, но никак не получается уловить нить
 
А я искал сумму с наибольшим количеством слагаемых. Только сейчас понял, что не то искал.. :)  
---------------  
СМЕЩ(C2;;ТРАНСП(СТОЛБЕЦ(C2:V2)-3);1;-1-ЧАСТОТА(СТОЛБЕЦ(C2:U2);(C2:U2="")*СТОЛБЕЦ(C2:U2)))) - Сложно понять принцип.  
 
--------------  
86579 - Стрит!
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Еще как вариант:  
=МАКС(ВЕРОЯТНОСТЬ(СТОЛБЕЦ(C1:V1);C1:V1/СУММ(C1:V1);НАИМЕНЬШИЙ((C1:W1="")*СТОЛБЕЦ(C1:W1);СТОЛБЕЦ(C1:V1)-2);НАИМЕНЬШИЙ((C1:W1="")*СТОЛБЕЦ(C1:W1);СТОЛБЕЦ(C1:V1)-1))*СУММ(C1:V1))  
 
Ограничения - ячейка после диапазона (в данном случае столбец W) должна быть пустой.  
Подобное же ограничение есть и в моей формуле с ЧАСТОТОЙ, в столбце перед диапазоном (столбец В) не должно быть числовых значений
 
МСН, DV, Владимир!  
 
Все таки это формулы массива...    
Спасибо огромное! Вы меня действительно выручили.
Страницы: 1
Читают тему
Наверх