Мне нужна формула, которая может расширить диапазон между другими данными.
В столбце B для каждого месяца можно указывать Foo
или Bar
в качестве значений.
Мне нужно посчитать числоFoos и баров в каждом месяце.Но также можно расширить диапазон от B6: B11 до, например, B6: 15, и функция счета должна работать.
=COUNTIF(B6:B11,"Foo")
Но это не динамично.
Я знаю, что вы можете создавать динамические диапазоны с OFFSET и COUNTA, но это не работает, потому что данные не структурированы так, как этого требует формула.
OFFSET($A$1,0,0,COUNTA($A:$A),1)
Я сделал UDF VBA, который эмулирует сочетание клавиш CTRL + DOWN, чтобы найти следующую заполненную ячейку, но поскольку счетчик Foos
или Bars
позднее связан с другой главной рабочей книгой aUDF не будет работать, UDF не могут работать со связанными значениями.(насколько я знаю)
=COUNTIF(INDIRECT("B"&nextC(A5)&":B"&last(A5)),"Foo")
где nextC и last:
Function last(rng)
last = Sheets("Sheet1").Cells(rng.Row, "A").End(xlDown).Row - 1 ' finds the last cell row in the current month
' with A5 as input it returns 11
End Function
Function nextC(rng)
nextC = rng.Offset(1, 0).Row ' returns 6 if input is A5
' there may be a better way to do this, I just couldn't think of it at the moment and just wanted to see if it worked
End Function
Существует ли какая-либо формула, которая может повторять значение UDF, давая COUNTIF динамический диапазон, который находится междуданные, как показано на рисунке.
Если нужны вспомогательные столбцы, то это не проблема.