思路,动态找出sheet1中有多少列,每列多少行,然后判断每列单元格是否有底纹颜色,如果没有,复制,有,跳过。VBA代码可写成如下形式(后面的注释都加了注释符号的,可以完全复制到VBA中运行)。
Sub 复制没有底纹的单元格()
Dim intCol_num%, intRow_num%, i%, intDw_a%, intShRow_num%
intCol_num = Sheets(1).Cells(1, 100).End(xlToLeft).Column '找出sheet1最后一个非空列的列号
For i = 1 To intCol_num Step 1 '循环非空的每一列
intRow_num = Sheets(1).Range("a65536").End(xlUp).Row '找出当前循环到的列的从65536行往上的最后一个非空单元格的行号
For Each ran In Sheets(1).Range(Sheets(1).Cells(1, i), Sheets(1).Cells(intRow_num, i)) '遍历当前循环到的列的非空单元格
intDw_a = ran.Interior.ColorIndex '提出当前单元格背景颜色指数值
If intDw_a < 0 Then
intShRow_num = Sheets(2).Cells(65536, i).End(xlUp).Row '找出sheet2对应列的最后一个非空单元格的行号
If Sheets(2).Cells(1, i).Value <> "" Then
ran.Copy Sheets(2).Cells(intShRow_num + 1, i)
Else
ran.Copy Sheets(2).Cells(intShRow_num, i)
End If
End If
Next
Next
End Sub
温馨提示:答案为网友推荐,仅供参考