Я пытаюсь пробраться через некоторые сценарии 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»
Пожалуйста помоги!
источник
SUMIFS()
?SUBTOTAL
функцию в Excel? Он может игнорировать скрытые значения и может использоватьсяSUMPRODUCT
для создания условного суммирования только для видимых строк. Это может свести на нет необходимость вашего UDF.Ответы:
Предполагая, что ваши данные содержат текст, а не даты, отформатированные так, чтобы это выглядело
d-mmm
, вам следует начать:Или, если у вас есть фактические даты:
B1: B2 - диапазон для суммирования, а A1: A2 - диапазон критериев.
Обратите внимание, что это
SUMIFS()
включает в себя скрытые строки, поэтому, если исключение скрытых ячеек является частью ваших критериев, которые вам понадобятсяSUBTOTAL()
илиAGGREGATE()
как упоминалось вышеисточник