Я пытаюсь пробраться через некоторые сценарии VBA. Я нашел этот код в сети, который позволяет выполнять функцию SumIf при выполнении одного условия. Я хотел бы расширить его до двух, может быть, трех условий.

    Function SumIfVisible(rng As Range, condition, rngSum As Range) As Double  
Dim i As Long
 For i = 1 To rngSum.Count

If rng(i) = condition And rngSum(i).EntireRow.Hidden = False Then
  SumIfVisible = SumIfVisible + rngSum(i)
End If
 Next I
End Function

Чтобы уточнить, я хотел бы встретить несколько условий в нескольких диапазонах. Т.е. Условие 1 в диапазоне D2:D200 и условие 2 и условие 3 в диапазоне H2:H200.

Кроме того, диапазоны могут иметь частично различающиеся значения в определенном смысле, но они соответствуют условию в целом, то есть условие 1 = "январь", диапазон D2:D200 содержит такие даты, как «1 января, 2 января, 3 января» и т.д. Все даты в "" отвечают условию. SUMIFS не допускают выбор усеченной строки для значений ячеек. Т.е. выберите каждую строку, в которой есть "Jan", даже если она содержит другие значения, такие как «1,2,3»

Пожалуйста помоги!

1 ответ1

0

Предполагая, что ваши данные содержат текст, а не даты, отформатированные так, чтобы они выглядели как d-mmm , вам следует начать:

=SUMIFS(B1:B2,A1:A2,"*Jan")

Или, если у вас есть фактические даты:

=SUMIFS(B1:B2,A1:A2,">=1/1/2016",A1:A2,"<=1/31/2016")

B1:B2 - диапазон для суммирования, а A1:A2 - диапазон критериев.

Обратите внимание, что SUMIFS() включает в себя скрытые строки, поэтому, если исключение скрытых ячеек является частью ваших критериев, вам потребуется SUBTOTAL() или AGGREGATE() как указано выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .