Страницы: 1
RSS
Посчитать сумму всех значений по заданному условию
 
Добрый день,
Столкнулся с проблемой посчитать сумму по заданному параметру. Например: по сумме в строке Яблоко должно получится 45 шт. т.е просуммировать Яблоко КНР 10 шт + Корея Яблоко 15 шт + Республика Беларусь 20 шт = 45 шт.

Как это сделать так как текст не идентичен в таблицах?
Возможно ли это сделать с помощью формул?
 
=СУММЕСЛИ(B$2:B$14;"*"&F2&"*";C$2:C$14)
 
если не секрет для чего нужно прописывать критерий так: "*"&F3&"*"?
Что это дает?
 
Звёздочка - подстановочный знак: любое количество любых символов
 
Я так понял данной формулой не получится решить такую задачу. Нужно посчитать доход по каждому адресу!
 
Нет, конечно. Данные нужно приводить к одному виду. Хотя бы частично.
Инструмент НАЙТИ/ЗАМЕНИТЬ - меняем ", кв. " на "-", можно еще (но не обязательно) " пр-т" на ничего, " ул." на ничего.
Вот после этих манипуляций получится.
 
Может выпадающий список в доп.столбце
или вторая таблица не вручную пишется?
 
таблица формируется не вручную. Грубо говоря обе таблицы с разных баз данных!
 
.
Изменено: МВТ - 21.10.2015 08:33:48
 
Цитата
Kentavrik написал: Грубо говоря обе таблицы с разных баз данных!
Ну, и что? Приводите их к одному виду. Делайте список соответствия разных написаний одному.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Не уверен, что всегда правильно будет считать
и не знаю насколько тормозить.
формула массива:
=СУММ(ЕЧИСЛО(ПОИСК(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2&"*"&B2;"-";"*");" ";"*")&"\";Данные!$A$2:$A$166&Данные!$B$2:$B$166&"\"))*Данные!$C$2:$C$166)

в примере повторов вроде бы нет, может сумма и не нужна, а нужно извлечь одно значение?
добавил вторую формулу:
=ИНДЕКС(Данные!$C$2:$C$166;ПОИСКПОЗ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2&"*"&B2;"-";"*");" ";"*");Данные!$A$2:$A$166&Данные!$B$2:$B$166;))
файл перезалил
Изменено: Catboyun - 21.10.2015 09:10:27
 
надо разобраться  с чудо формулой=)
 
Вот так можно приводить адрес из первой таблицы в соответствие со второй (только у Вас в итоговой таблице почему-то есть такая запись, хотя я так понял ул. и пр-т должны удаляться)
UPD немного изменил: теперь отображение номера квартиры после улицы можно включать и выключать
Код
Function Улица(Адрес As String, Optional Квартира As Boolean) As String
With CreateObject("VBScript.regexp")
    .Ignorecase = True
    .Global = True
    .Pattern = "(ул.|пр-т) (.+?)(, кв. \d*|$)"
    If .Test(Адрес) Then
        With .Execute(Адрес)(0).SubMatches
            Улица = .Item(1) & IIf(Квартира And .Item(2) <> "", "-" & Replace(.Item(2), ", кв. ", ""), "")
        End With
    End If
End With
End Function
Изменено: МВТ - 21.10.2015 09:24:33
 
Обе формулы считают пока не появляется дробь "/"
 
Все разобрался! Всем спасибо что помогли в трудную минуту! :)
Страницы: 1
Наверх