Код VBA для оператора SUMIF - Необходимы дополнительные условия

0

Я пытаюсь пробраться через некоторые сценарии 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»

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

clearguise
источник
Приведенный выше код будет суммировать только видимые ячейки, вы тоже этого хотите?
Линга
2
У вас есть доступ к SUMIFS()?
Кайл
1
Вы пытались использовать SUBTOTALфункцию в Excel? Он может игнорировать скрытые значения и может использоваться SUMPRODUCTдля создания условного суммирования только для видимых строк. Это может свести на нет необходимость вашего UDF.
Инженер Тост
AGGREGATE также может пригодиться, если у вас XL2010 или>.
Скотт Хольцман
1
@clearguise, если вы измените свой вопрос, включив в него примеры данных и ожидаемый результат, я уверен, что мы можем вам помочь.
Кайл

Ответы:

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()как упоминалось выше

рукав моря
источник