用于数据清理的范围循环

时间:2015-06-05 20:02:22

标签: excel excel-vba for-loop boolean conditional-formatting vba

这看起来应该很简单,但我整个下午都收到了错误代码: 我有数据,我试图清理图形(它从保留系统导出,有时离开"空白"单元格实际上不是空白)。所以,我想我可以运行一个" IsNumeric"获取TRUE / FALSE值的公式,但现在我遇到了如何用我选择的值替换显示为空白的现有非空白的问题。

所有数据都在A列中,然后B列运行TRUE / FALSE公式:

=ISNUMBER(A1) 'from rows 1 to 4378

我希望能够在这些行上对C列进行宏写操作(至少,这是我提出的最好的,但它不起作用):

Sub WayEatFresh()

Dim dbsheet As Worksheet

Set dbsheet = ThisWorkbook.Sheets("Sheet2")

lr = dbsheet.Cells(Rows.Count,1).End(xlUp).Row

For x = 1 To lr

If dbsheet.Range(x,2).Value = True Then
    dbsheet.Range(x,3).Value = dbsheet.Range(x,1).Value
Else dbsheet.Range(x,3).Value = 0
End If

Next x

End Sub

我不确定如何解决运行时错误"' 1004':方法'范围'对象' _Worksheet'失败"

任何指针?

根据@nwhaught提供的建议编辑原始代码,我在代码中添加了一些内容,现在它正在运行。这是最后一次迭代(对于为什么这对其他版本起作用的任何解释都是最受欢迎的!):

Sub WayEatFresh()

Dim x As Integer

With ThisWorkbook

For x = 1 To 4378

If Cells(x, 2).Value = True Then
Cells(x, 3).Value = Cells(x, 1).Value

Else
Cells(x, 3).Value = 0

End If

Next x

End With

End Sub

1 个答案:

答案 0 :(得分:1)

您在Cells内使用Range符号。

Cells的格式为([RowNumber],[ColNumber])

Range的格式为([CellAddress],[CellAddress])(Cells(1,1),Cells(1,2))

对于您的代码,我建议您使用Range替换Cells