[英]Going through columns and setting a range with “Do while” loop in Vba
我有一个时间序列的数据范围,其中日期在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,但是我已经尝试过不为其分配值,但是出现错误。
意见2:由于此函数从子程序接收参数,因此SourceWorksheet是用户将输入的参数。
关于此代码有什么问题的任何想法?
除了我们已经解决的许多其他问题之外,如果单元格B1不包含“ N / A”(例如,由于标题),则循环将失败。
尝试以下修改的代码:
With w.Sheets(SourceWorksheet)
If SourceWorksheet = "Ret" Or SourceWorksheet = "Vol" Then
i = 2 ' or i=3, whatever row contains your first item of data
Do While .Cells(i, 2).Value = "N/A"
i = i + 1
Loop
Set RetRange = .Range(.Cells(i, 1), .Cells.SpecialCells(xlCellTypeLastCell))
Else
Set RetRange = .UsedRange
End If
End With
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.