以下是引用Angellong在2006-5-10 17:17:00的发言:我来的太晚了。 看了49页前面的帖子,也完成了“单元格表示过关题”和“变量过关题”,在做“语句使用过关题”的时候出现了问题。下面是我得代码: Sub CYS() Dim x As Integer Dim y As Integer Dim c As Integer Dim d As Integer For x = 1 To 12 For y = 1 To 7 If Cells(x, y).Interior.ColorIndex = 6 Then c = Range("a65536").End(xlUp).Row '这里用cells(c,1)不对,应该用c+1 Cells(c, 1).Value = Cells(x, y).Value End If Next y Next x d = Range("a65536").End(xlUp).Row Cells(d, 1).Value = Application.WorksheetFunction.Sum(Range(Cells(12, 1), Cells(d, 1)))
End Sub
运行的结果是 把a列的数据都删除了(就剩下a1没有删掉),这是为什么啊?如果上面那个6换成27 就什么反应因都没有,也不报错,这是为什么啊?兰老师还过来吗?能不能帮我看看?
[em04][em04][em04] 谢谢! Sub CYS() '在区域a1:g12中按颜色求和,要求将满足颜色条件的值,放在a12以后并求和 Dim x As Integer Dim y As Integer Dim c As Integer Dim d As Integer '读取区域中的每个单元格,这里最好使用for each语句速度更快 For x = 1 To 12 For y = 1 To 7 '读取区域中的每个单元格颜色,如果和a3的颜色一样,那么将该值放在a列最后一个非空单元格下面 If Cells(x, y).Interior.Color = Range("a3").Interior.Color Then 'c为a列最后一个非空单元格,这里的c随着循环运行而不断地变化 c = Range("a65536").End(xlUp).Row '注意这里使用c+1,因为要将满足条件的结果放在最后一个非空单元格下面 Cells(c + 1, 1).Value = Cells(x, y).Value End If Next y Next x d = Range("a65536").End(xlUp).Row '最后求和 Cells(d + 1, 1).Value = Application.WorksheetFunction.Sum(Range(Cells(13, 1), Cells(d, 1))) End Sub |