如何在 countif 中连接偏移范围

How to concatenate offset range in countif

我在 Excel 中有公式告诉我列的组合是否已经出现在前面的行中。我用它作为数组公式。

{=MATCH([@[col1]]&[@[col2]],$K:K11&$H:H11)}

我也尝试了 COUNTIF,但它不是这样工作的。

问题是我需要将这个绝对引用更改为相对引用。

到目前为止,最优雅的解决方案是使用 OFFSET 函数(行从第 10 行开始):

{=MATCH([@[col1]]&[@[col2]],OFFSET([@[col1]],-(ROW()-10),0,ROW()-9,1)&OFFSET([@[col2]],-(ROW()-10),0,ROW()-9,1))}

不幸的是,这种方法不起作用。有人解决方法吗?

不管我得到计数​​还是只是 true/false.

我已经通过在 VBA 中创建自定义函数解决了这个问题:

Function FIRSTOCCURANCE(StartFromRow As Integer, _
                             val1 As Range, _
                             val2 As Range) As Boolean

Dim RangeX() As Variant, RangeY() As Variant, RangeZ() As Variant, Concat() As Variant
Dim lastRow As Integer, i As Integer, j As Integer: j = 0
lastRow = val1.Row - 1

RangeX = Range(Cells(StartFromRow, val1.Column), Cells(lastRow, val1.Column)).Value
RangeY = Range(Cells(StartFromRow, val2.Column), Cells(lastRow, val2.Column)).Value
'when assigning from range always is 2-D array

For i = LBound(RangeX, 1) To UBound(RangeX, 1)
    ReDim Preserve Concat(j)
    Concat(j) = RangeY(i, 1) & RangeX(i, 1)
    j = j + 1
Next i

FIRSTOCCURANCE = IsError(Application.Match(val2.Value & val1.Value, Concat, 0))

End Function