筛选A列空白,在第一个空白单元格输入=对上一个单元格,例如A3是第一个单元格,在A3输入=A2,然后向下填充

筛选A列空白,在第一个空白单元格输入=对上一个单元格,例如A3是第一个单元格,在A3输入=A2,然后全部空白单元格用Ctrl+D向下填充,怎么用宏代码表示,有很多表要用到

感觉你要做的是这样一件事情。

追问

是要做这样,可是工作表有几十万个空值,这样做很慢

追答

选择这一列,然后定位空值啊。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-24
用代码解决问题,不能还停留在基于EXCEL原有功能的基础上,要彻底解放自己的思想,不能按原来的思路走,否则,会代码也意义不大。
如题意,要使得下一个单元格等于上一个单元格的值,好的方法不外乎两种,即:
1、基于EXCEL基本功能,利用查找定位功能,选择空白单元格,然后输入公式=上一单元格的引用,如=A2,以ctrl+enter结果;
2、就是你题中提到的用代码。如果用代码,就不再是那个思路了,因为那样写成代码跟实际操作过程中一样的,我们可以换一个方法,尽可能让所有的计算在代码中计算,而只需要在表格中得到结果就行了,这样的好处是程序运行会更快。
思路,一般是用循环语句,从第一个单元格开始进行判断是否为空,如果为空即等于上一个单元格的值。如果是有规律的,还可以用循环语句,设定步长为2,从第二个单元格开始,直到最后,这样会运行的更快。追问

试过用条件定位,好慢,数据比较大,用宏会快点

追答

数据量大,速度慢,建议使用VBA。
导致运行慢的原因不一定在A列,如果你的工作表函数,特别是数据公式太多,也一样的会慢。
为了加快运行速度,使用VBA时一定要用代码控制工作表的重算功能,即一开始要禁用工作表的重算,Application.Calculation = xlCalculationManual
直到最后全部运算写成,再恢复其自动重算,Application.Calculation = xlCalculationAutomatic。

第2个回答  2018-10-23
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FillDown

第一行表示:从选中的单元格开始,向下选取单元格。其中Selection可以替换成指定的单元格。

第二行表示:用选中的第一个单元格内容向下填充。

以上宏代码等同于,选定某单元格,先按shift+ctrl+↓,再按ctrl+D。

追问

可以用,但是会一直到A列最后一个表格A1048576,只想到B列对应有数据的表格,怎么改

追答    Range(Selection, Selection.Offset(0, 1).End(xlDown).Offset(0, -1)).Select
    Selection.FillDown

用上面这个,可以解决。

扣:吧吴气流旧吴旧而吴

本回答被提问者和网友采纳