vba:仅连接可见单元格的函数

我有一个excel公式:

=IF(OR(ISNUMBER(SEARCH({"DA","NU"},'- - REZULTAT ANAF - -'!I4))),CONCATENATE('- - REZULTAT ANAF - -'!B4,""),"") 

它下降到17000行。

它将单元格B4连接到表单 – REZULTAT ANAF – – 到另一个表单,如果I4从表单 – REZULTAT ANAF – =“DA”或“NU”。

我需要一个function,将做同样的事情,但它也确定如果单元格是可见的(过滤)和连接只有当它是可见的(没有被滤除)。 (我设法做一个范围,但我需要做到这一点一格)

我可以做同样的事情,做到这一点:在整个表上自动过滤,然后只复制另一张表上的整个结果,但是是一个表格17000充分的公式和macros,减慢Excel的很多。

我正在使用不同的工作表名称,但是这适用于我:

 =IF(AND(SUBTOTAL(103,Sheet2!I4),OR(ISNUMBER(SEARCH({"DA","NU"},Sheet2!I4)))), CONCATENATE(Sheet2!B4,""), "")