Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/суммирование массива1 при условии Х в массиве2 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » суммирование массива1 при условии Х в массиве2 (Макросы/Sub)
суммирование массива1 при условии Х в массиве2
denior628 Дата: Суббота, 22.03.2014, 03:31 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток.

помогите мне осилить этот макрос

код рабочий, только немного не тот результат
[vba]
Код
Sub SumPlan()

Dim sum9607 As Integer
Dim a As Integer, b As Integer

Dim pa9607 As Range
Dim ppa9607 As Range
Dim pl9607 As Range
Dim p9607 As Range

Set pa9607 = Worksheets("2").Range("b2", "b9")
For Each ppa9607 In pa9607

         

             Set pl9607 = Worksheets("2").Range("a2", "a9")
             For Each p9607 In pl9607
              
             If ppa9607 = 2 Then
              
             sum9607 = sum9607 + p9607
              
         Else

sum9607 = sum9607
              
       End If
        Next p9607
Next ppa9607

Dim fr9607 As Range
Set fr9607 = Worksheets("2").Range("d2")
fr9607.Value = sum9607

End Sub
[/vba]

проблема в том что макрос суммирует весь столбец "А2", "А9", каждую строчку подряд при условии что в столбце "В2", "В9" цикл находит переменную "2", в данном случае сумма столбца "А" =21, переменная 2 повторяеться в столбце "В" 3 раза - итог 63 а не 11 как надо.
а мне нужно суммировать тольку ту ячейку столбца "А" если в столбце "В" переменная равна 2-м.

помогите, очень на вас надеюсь
 
Ответить
СообщениеДоброго времени суток.

помогите мне осилить этот макрос

код рабочий, только немного не тот результат
[vba]
Код
Sub SumPlan()

Dim sum9607 As Integer
Dim a As Integer, b As Integer

Dim pa9607 As Range
Dim ppa9607 As Range
Dim pl9607 As Range
Dim p9607 As Range

Set pa9607 = Worksheets("2").Range("b2", "b9")
For Each ppa9607 In pa9607

         

             Set pl9607 = Worksheets("2").Range("a2", "a9")
             For Each p9607 In pl9607
              
             If ppa9607 = 2 Then
              
             sum9607 = sum9607 + p9607
              
         Else

sum9607 = sum9607
              
       End If
        Next p9607
Next ppa9607

Dim fr9607 As Range
Set fr9607 = Worksheets("2").Range("d2")
fr9607.Value = sum9607

End Sub
[/vba]

проблема в том что макрос суммирует весь столбец "А2", "А9", каждую строчку подряд при условии что в столбце "В2", "В9" цикл находит переменную "2", в данном случае сумма столбца "А" =21, переменная 2 повторяеться в столбце "В" 3 раза - итог 63 а не 11 как надо.
а мне нужно суммировать тольку ту ячейку столбца "А" если в столбце "В" переменная равна 2-м.

помогите, очень на вас надеюсь

Автор - denior628
Дата добавления - 22.03.2014 в 03:31
wild_pig Дата: Суббота, 22.03.2014, 09:42 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Лучше в файле покажите что должно быть.
Может так (упрощённо):
[vba]
Код
Sub uuu()
For i = 1 To 10
If Cells(i, 1) = 2 Then x = x + Cells(i, 2)
Next
MsgBox x
End Sub
[/vba]
К сообщению приложен файл: __2.xls (19.0 Kb)


Сообщение отредактировал wild_pig - Суббота, 22.03.2014, 09:48
 
Ответить
СообщениеЛучше в файле покажите что должно быть.
Может так (упрощённо):
[vba]
Код
Sub uuu()
For i = 1 To 10
If Cells(i, 1) = 2 Then x = x + Cells(i, 2)
Next
MsgBox x
End Sub
[/vba]

Автор - wild_pig
Дата добавления - 22.03.2014 в 09:42
denior628 Дата: Суббота, 22.03.2014, 14:47 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
спасибо за помощь, пока остановился на таком варианте
[vba]
Код

Sub sumif ()

With Worksheets("2")
.Range("d2") = Application.WorksheetFunction.SumIfs(.Range("a1:a9"), .Range("b1:b9"), "=2")
End With
End Sub
[/vba]

Цитата
Лучше в файле покажите что должно быть.


спасибо за подсказку. мне кажется этот вариант легче, без выделения... попробую и его
К сообщению приложен файл: vba__.xlsm (16.5 Kb)
 
Ответить
Сообщениеспасибо за помощь, пока остановился на таком варианте
[vba]
Код

Sub sumif ()

With Worksheets("2")
.Range("d2") = Application.WorksheetFunction.SumIfs(.Range("a1:a9"), .Range("b1:b9"), "=2")
End With
End Sub
[/vba]

Цитата
Лучше в файле покажите что должно быть.


спасибо за подсказку. мне кажется этот вариант легче, без выделения... попробую и его

Автор - denior628
Дата добавления - 22.03.2014 в 14:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » суммирование массива1 при условии Х в массиве2 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!