以下公式仅在手动填充列时有效。
'=(TEXTJOIN("| ",TRUE,UNIQUE(FILTER(rngNOTES,(rngDWG=$H3)*(rngASSY=$I3)*(rngASSY_DESCR=$J3)))))
在H3中,我有一个独特的多行和三列的溢出范围。我正试图使上述方程溢出列,而不是不得不复制下列。我尝试了以下操作:
=(TEXTJOIN("| ",TRUE,UNIQUE(FILTER(rngNOTES,(rngDWG=INDEX($H3#,,1))*(rngASSY=INDEX($H3#,,2))*(rngASSY_DESCR=INDEX($H3#,,4))))))
但是,我收到一个错误(#N/A),我认为这是由于$H3#中UNIQUE溢出的大小(行数)和我试图评估的范围的差异。
是否有一种方法可以使此工作,使包含此公式的列是动态的?
编辑:示例文件屏幕截图
pgSystemTester,我有一个示例文件准备;在我的Google Drive里。
如果我将K3更新为
=IF(INDEX(H3#,,1)<>"",(TEXTJOIN("| ",TRUE,UNIQUE(FILTER(rngNOTES,(rngDWG=$H3)*(rngASSY=$I3)*(rngASSY_DESCR=$J3))))),"")
我可以让分子式溢出来。但是,标准引用保持静态,不会增加到"new"。行参考。结果数据仅对ROW(1)是正确的,并作为ROW(1)数据溢出到其他行。
更新的结果捕获
这使我相信我需要以一种方式更新标准以反映新的行位置…这就是我被卡住的地方。
谢谢你,兰迪
根据@pgSystemTester的评论,Textjoin不会泄漏自己,因为它是为整个数组返回单个结果(在这种情况下,数组H3#
)。
来克服这一点,你需要把你的出数组的行,并应用textjoin函数单独每一行。为单行创建公式并手动复制它是一种选择,但是要动态地泄漏它,您可以使用BYROW()
函数来解决这个确切的问题。
=BYROW(H3#,LAMBDA(row,TEXTJOIN("|", TRUE, UNIQUE(FILTER(rngNOTES,(rngDWG=INDEX(row,1))*(rngASSY=INDEX(row,2))*(rngASSY_DESCR=INDEX(row,3)))))))
注意我是如何在过滤器中使用INDEX(row, x)
的,因为它不能接受单独的数组H3#, I3#和J3#(另外,H3#跨越所有三列,所以row
数组也是如此)。