用于数据清理的范围循环

Range Loop for Data Clean-up

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

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

=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' 的方法 'Range' 失败”。

有什么指点吗?


根据@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

您在 Range 中使用了 Cells 符号。

Cells 的形式为 ([RowNumber],[ColNumber]).

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

对于您的代码,我建议将您的 Range 替换为 Cells