Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2014, 23:51   #1
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию Сумма значений при условии

Доброго времени суток!
Помогите написать макрос, чтобы при совпадении одинаковых значений в строках, суммировал их значение, заполняя соседние столбцы. Т.е. есть таблица со значениями которые повторяются по столбцам - "сумма" (А), "наименование" (В), "свойства" (С). Необходимо, если наименование (В) имеет одинаковое свойство (С), то в соседних столбцах D, E, F, один раз заполнялся значениями (в столбики D - наименование, E - свойства), а столбик F - это сумма всех повторяющих значений. Столбцы D, E, F предварительно очистить.
пример:
исходные данные (A, B, C) | итоговые данные (D, E, F)
---- A ----- B ----- C -------- D ------- E ------ F ------
сумма | наим-ние| сво-во | наим-ние| сво-во | сумма
-------------------------------------------------------------------------
1540.00 | рубашка | серая | рубашка | серая | 3132.00
1523.00 | рубашка | белая | рубашка | белая | 1963.00
452.00 | рубашка | серая | рубашка | черная | 2560.00
440.00 | рубашка | белая |
2560.00 | рубашка | черная |
1140.00 | рубашка | серая |
Вложения
Тип файла: rar 1-10.rar (8.5 Кб, 8 просмотров)
amadeus017 вне форума Ответить с цитированием
Старый 29.05.2014, 00:12   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в F3 пишите эту формулу
Код:
=СУММПРОИЗВ(($B$3:$B$42=D3)*($C$3:$C$42=E3)*$A$3:$A$42)
потом копируйте ее вниз по столбику.
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.05.2014, 12:09   #3
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

К сожалению, это не то что я хотел бы видеть, формула
=СУММПРОИЗВ(($B$3:$B$42=D3)*($C$3:$ C$42=E3)*$A$3:$A$42)
схожа по своему принципу, что и
=СУММЕСЛИМН()
и обе они привязаны к определенным значениям введенным вручную.
Таблица которую я привел в качестве примера, имеют мало переменных, в действительности, переменных более сотни и прописывать значение проблематично (долго), поэтому хотелось бы видеть в идеале макрос а не формулу для просчета.
Вероятно я изначально неполную предоставил информацию, поэтому ожидал другой ответ )))
amadeus017 вне форума Ответить с цитированием
Старый 29.05.2014, 13:35   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

увы, макроса так и нет...
используйте сводную таблицу
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.05.2014, 06:15   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Ну, можно и макросом:
Код:
Sub Main()
    Dim i As Integer, s As String, a(), x
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    Intersect(Rows("3:" & Rows.Count), [D:F]).ClearContents
    a = Range("A3:C" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    Set x = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(a, 1)
        s = a(i, 2) & "|" & a(i, 3)
        If x.Exists(s) Then x.Item(s) = x.Item(s) + a(i, 1) Else x.Add s, a(i, 1)
    Next
    With [D3].Resize(x.Count)
        .Value = Application.Transpose(x.Keys)
        .TextToColumns Destination:=[D3], DataType:=xlDelimited, Other:=True, OtherChar:="|"
    End With
    [F3].Resize(x.Count).Value = Application.Transpose(x.Items)
    Range("D3:F" & Cells(Rows.Count, 4).End(xlUp).Row).Sort Key1:=Range("D3"), Order1:=xlAscending, Header:=xlNo
End Sub
Пример во вложении.
Вложения
Тип файла: rar 1-10_2.rar (16.3 Кб, 13 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 11.06.2014, 06:31   #6
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

То что нужно!!!
Спасибо огромное!
amadeus017 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Много значений в условии d_adilet Microsoft Office Access 1 02.11.2011 14:49
Освобождение памяти при условии Кипящий чайник Общие вопросы C/C++ 2 23.11.2010 17:31
Разметка страницы при условии axaptaalex Microsoft Office Excel 2 20.03.2009 18:36
Опять сумма. Теперь при условии jungo Microsoft Office Excel 11 07.05.2008 09:38
DBGridEh+EditMask при условии. Jenya БД в Delphi 1 03.03.2008 13:58