Страницы: 1
RSS
Данные в разнобой после выгрузки из 1С
 
Вот кусочек файла из 1С ААА, как автоматом посчитать только жёлтые ячейки?
 
Сереж я думаю надо доп столбец создать посчитать  построчно    
по цвету заливки есть формулы пользовательские а потом СУММЕСЛИ()
 
А ведь было! - "http://www.planetaexcel.ru/forum.php?thread_id=4266".
 
Если у тебя нет то лови    
'*******************************************************************  
'Сумирование ячеек по цвету заливки (включая условное форматирование)  
Function Summ_CellColor(Summ_Range, Cell_Color, Optional Criteria)  
'    Application.Volatile True  
   Dim cell As Range  
   'Определяем наличие условного форматирования в ячейке-образце  
   If Cell_Color.FormatConditions.Count <> 0 Then  
       CellIndex = Cell_Color.FormatConditions(1).Interior.colorindex  
       If IsNull(CellIndex) Then CellIndex = Cell_Color.Interior.colorindex  
   Else  
       CellIndex = Cell_Color.Interior.colorindex  
   End If  
 
   For Each cell In Summ_Range  
       'Определяем наличие условного форматирования в обрабатываемой ячейке  
       If cell.FormatConditions.Count <> 0 Then  
           CellColIndex = cell.FormatConditions(1).Interior.colorindex  
           If IsNull(CellColIndex) Then CellColIndex = cell.Interior.colorindex  
       Else  
           CellColIndex = cell.Interior.colorindex  
       End If  
       'Суммируем значения  
       If IsMissing(Criteria) Then  
           If cell.Value <> "" And CellIndex = CellColIndex And IsNumeric(cell.Value) _  
              Then Summ_CellColor = Summ_CellColor + cell.Value  
       Else  
           If cell.Value <> "" And CellIndex = CellColIndex _  
              And IsNumeric(cell.Value) And Cells(cell.Row, Criteria.Column) = Criteria _  
              Then Summ_CellColor = Summ_CellColor + cell.Value  
       End If  
   Next  
End Function
 
Продолжу:  
 
Можно ли пометить Исполнителей разными цветами? Сделаем универсальный инструмент.
 
Ээээ, даж неудобно как-то...  
 
Это я вручную раскрасил, сам, чтоб понятно было чего кому суммировать...  
В оригинале конечно никаких цветов нет, выгрузка чёрно-белая, тока красоту в шапке навести можно, т.е. там где никому не надо...
 
{quote}{login=Serge 007}{date=26.11.2009 02:27}{thema=}{post}Ээээ, даж неудобно как-то...  
 
Это я вручную раскрасил, сам, чтоб понятно было чего кому суммировать...  
В оригинале конечно никаких цветов нет, выгрузка чёрно-белая, тока красоту в шапке навести можно, т.е. там где никому не надо...{/post}{/quote}  
 
Так зачем такое задание заводить?
 
Serge 007, от только хотел сказать, что это вручную раскрашено.  
Я долго обедал :)  
Объясните зачем складывать "Количество работ" и "Сумма работ со скидкой (упр.)"?  
Ежа с ужом?
Bite my shiny metal ass!      
 
А этот пост к слову о выгрузках из темы про Спец.вставку?  
________________________________________________________  
Частично да.  
 
Какие критерии суммирования? Их нет нигде технически, надо полагать - они в голове сотрудника?  
_________________________________________________________  
 
Я думал из файла будет ясно...  
 
Количество работ - суммирует всё, Сумма работ со скидкой (упр.) - суммирует все внутренние и гарантийные работы, Сумма товаров со скидкой (упр.) - только внутренние
 
{quote}{login=Лузер™}{date=26.11.2009 02:41}{thema=}{post}Serge 007, от только хотел сказать, что это вручную раскрашено.  
Я долго обедал :)  
Объясните зачем складывать "Количество работ" и "Сумма работ со скидкой (упр.)"?  
Ежа с ужом?{/post}{/quote}  
 
Это пример, в оригинале другие названия, мне главное принцип понять как это просуммировать.  
Структура отчёта переданна точно.
 
g7=ЕСЛИ(B7<>"";B7;G6) и тянем вниз.  
j7=СУММ(ЕСЛИ($G$7:$G$19=I7;$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("внутренний";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
массив.  
Можно без доп столбца, если часто обрабатывать новые файлы нужно.
 
{quote}{login=Саша}{date=26.11.2009 03:35}{thema=}{post}g7=ЕСЛИ(B7<>"";B7;G6) и тянем вниз.  
j7=СУММ(ЕСЛИ($G$7:$G$19=I7;$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("внутренний";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
массив.  
Можно без доп столбца, если часто обрабатывать новые файлы нужно.{/post}{/quote}  
 
Спасибо Саша, работает!  
Но и вариант без доп столбца, если не трудно, тож выложи :)
 
j7=СУММ(ЕСЛИ(ПРОСМОТР(СТРОКА($B$7:$B$19);НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19)))))=ПОИСКПОЗ(I7;B:B;0);$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("внутренний";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
 
Ивановы-петровы должны быть уникальными, т е не должно быть 5 строк инванова, потом 5 строк петрова, потом опять строки иванова. Иначе алгоритм поменять нужно.
 
{quote}{login=Саша}{date=26.11.2009 03:50}{thema=}{post}j7=СУММ(ЕСЛИ(ПРОСМОТР(СТРОКА($B$7:$B$19);НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19)))))=ПОИСКПОЗ(I7;B:B;0);$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("внутренний";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
 
Ивановы-петровы должны быть уникальными, т е не должно быть 5 строк инванова, потом 5 строк петрова, потом опять строки иванова. Иначе алгоритм поменять нужно.{/post}{/quote}  
 
И ещё одно большое сенкью!  
Ивановы, Петровы, Сидоровы уникальны и появляются в отчёте по алфавиту, так что такая ситуация исключена.
 
Ок, оффтоп для людей, которые потом сюда могут зайти в поисках решения аналогичной проблемы:  
 
В прошлой формуле сравнение идёт по номеру строки чтобы не было необходимости прибегать к летучим функциям. Если значения могут идти "вразнабой", то можно проводить сравнения со значениями, т е в просмотр добавить вектор результатов со значениями ячеек.  
Формула написана "в лоб", алгоритм отнюдь не оптимальный, а следующий вообще летучий, в связи с чем использовать можно только если производительность не важна.  
Получается вот такое чудовище:  
=СУММ(ЕСЛИ(ПРОСМОТР(СТРОКА($B$7:$B$19);НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19))));Т(ДВССЫЛ("b"&НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19)))))))=I7;$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("внутренний";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
 
Работать будет только в 2007 ввиду того, что требуется большое количество вложений. Т е править ссылки на столбцы не имеет смысла, не поможет.
 
Как не пытался, так и не смог поменять формулу под себя...
 
{quote}{login=Лузер™}{date=26.11.2009 02:41}{thema=}{post}Serge 007, от только хотел сказать, что это вручную раскрашено.  
Я долго обедал :)  
Объясните зачем складывать "Количество работ" и "Сумма работ со скидкой (упр.)"?  
Ежа с ужом?{/post}{/quote}  
 
И тут Вы правы оказались, не надо было первый столбец суммировать с остальными...  
 
Худшая моя тема, всем искреннее сори...
 
=СУММ(ЕСЛИ(ПРОСМОТР(СТРОКА($B$7:$B$19);НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19)))))=ПОИСКПОЗ(I7;B:B;0);$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("текущий";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
 
Так вроде. Заменил в одном месте внутренний на текущий...  
Мог не правильно понять условия, т к больше суток не спал.
 
{quote}{login=Саша}{date=01.12.2009 02:40}{thema=}{post}=СУММ(ЕСЛИ(ПРОСМОТР(СТРОКА($B$7:$B$19);НАИМЕНЬШИЙ(ЕСЛИ($B$7:$B$19<>"";СТРОКА($B$7:$B$19));СТРОКА($A$1:ИНДЕКС(A:A;СЧЁТЗ($B$7:$B$19)))))=ПОИСКПОЗ(I7;B:B;0);$D$7:$D$19*($C$7:$C$19<>"")+ЕСЛИ(ЕЧИСЛО(ПОИСК("текущий";$C$7:$C$19));$E$7:$E$19+$F$7:$F$19)+ЕСЛИ(ЕЧИСЛО(ПОИСК("гарантийный";$C$7:$C$19));$E$7:$E$19)))  
 
Так вроде. Заменил в одном месте внутренний на текущий...  
Мог не правильно понять условия, т к больше суток не спал.{/post}{/quote}  
 
Я тогда попозже в личку, ок?
Страницы: 1
Читают тему
Наверх