如何避免VBA中UNIQUE函数返回结果末尾出现0值?
解决UNIQUE函数结果末尾出现0值的问题
出现0值的原因很明确:你指定的原数据范围'1.Technical Compliance'!R[-2]C[4]:R[45]C[4]包含了空单元格,Excel会自动把空单元格当作数值0处理,所以UNIQUE函数会把这个0也纳入唯一值结果里。
给你几个实用的解决办法:
调整数据范围,避免包含空单元格
先确认原数据的实际有效行范围,把公式里的结束行R[45]C[4]改成数据实际结束的行号。比如如果数据只到对应R[10]C[4]的行,修改后的VBA代码如下:Range("A9").Formula2R1C1 = "=UNIQUE('1.Technical Compliance'!R[-2]C[4]:R[10]C[4])"用FILTER过滤空值/0值后再取唯一值
在UNIQUE外层嵌套FILTER函数,直接把原数据里的0和空单元格过滤掉,公式更灵活,不用手动调整范围。修改后的VBA代码:Range("A9").Formula2R1C1 = "=UNIQUE(FILTER('1.Technical Compliance'!R[-2]C[4]:R[45]C[4],'1.Technical Compliance'!R[-2]C[4]:R[45]C[4]<>0))"用IF将0值替换为空文本
把原数据中的0(包括空单元格转成的0)替换成空文本,UNIQUE不会把空文本纳入结果。对应的VBA代码:Range("A9").Formula2R1C1 = "=UNIQUE(IF('1.Technical Compliance'!R[-2]C[4]:R[45]C[4]=0,"""",'1.Technical Compliance'!R[-2]C[4]:R[45]C[4]))"
内容的提问来源于stack exchange,提问作者Dinda
相关产品推荐
相关产品推荐

