【发布时间】:2017-06-12 21:18:26
【问题描述】:
我有一个时间序列数据范围,A 列有日期,B 列有价格。
此数据在前 200 行中有“N/A”(字符串,不是错误)(此数字不准确,每次运行文件时都会更改,因此我无法直接引用它)。
为了能够从没有“N/A”的范围绘制图形,我使用“Do While”循环遍历行,直到它不等于“N/A”,然后设置范围。
问题:由于某种原因,我的“i”计数器没有求和。循环开始然后以 i = 1 结束,它应该是 i = 最后一个“N/A”的行号。
代码的相关部分是:
i = 1
If SourceWorksheet = "Ret" Or SourceWorksheet = "Vol" Then
Do While w.Sheets(SourceWorksheet).Cells(i, 2) = "N/A"
i = i + 1 '****Problem IS HERE, IT IS NOT SUMMING TO i
Loop
Set RetRange = w.Sheets(SourceWorksheet).Range(Cells(i + 1, 1), Cells(xlLastCell))
Else
Set RetRange = w.Sheets(SourceWorksheet).UsedRange
End If
Obs 1:在这种情况下,我设置 i = 1,但我已经尝试过不为其分配值,但出现错误。
Obs 2: 因为这是一个从 sub 接收参数的函数,所以 SourceWorksheet 是一个将由用户输入的参数。
关于这段代码有什么问题的任何想法?
【问题讨论】:
-
@YowE3K 我的单元格确实有字符串
"=N/A",因为它们来自另一个将字符串放在那里的代码。这不是错误,它只是表明没有足够的数据可用。 -
@YowE3K 确实你是对的。我刚刚做到了。
-
我的评论错了,代码确实有那个#。但即便如此,我已经尝试将其更改为“不可用”以避免 #N/A 问题,但它仍然不起作用。
-
确实,你是对的。我只是要在代码中更改它以避免更多的混乱。关于套装,还有另一个好处。我在if的第二部分做了,但在第一部分忘记了。
-
@DGMS89 - 代码中的
on Error Resume Next是在剪切部分之前吗?我之所以问,是因为我吃过您的代码并收到了Type Mismatch错误,因此必须将...Cells(i, 2)更改为...Cells(i, 2).Text才能使其正常工作。