因该是隐藏的行中也会填上1,但是填的范围可能会比你想要的小吧因为r2 = Cells(65536, 1).End(xlUp).Row,当有隐藏行或者筛选时将返回可见的最后一个单元格的行号
筛选过滤了只是你看不到、选不中,但实际单元格还存在,通过vba可以向这些单元格写入数据。再解释一下你这个代码想实现什么效果?看看能不能帮忙。