我目前有一个有很多借款人的电子表格。我希望如果第V列中的借款人数量大于1,以便在列HD中返回NA值,并且如果它只是一个借款人,则返回ND值。
我目前有以下内容,但有人可以建议我如何从第五行开始,如果有更快的方式,因为有数万个字段,并且它正在手动执行每个字段。
Sub Change()
Dim lngLoop As Long
lngLoop = 1
对于lngLoop = 1到Rows.Count
If Cells(lngLoop,22).Value =“1”Then Cells(lngLoop,212).Value =“NA”
If Cells(lngLoop,22).Value> 1 Then Cells(lngLoop,212).Value =“ND”
下一个lngLoop 结束子
答案 0 :(得分:0)
好的,所以我注意到你的代码有些问题。
首先,您的第一个“If”语句将值视为字符串,因为您的字符串值为“1”而不是正在测试的整数值1。
其次,如果您正在处理和阅读/写入数千行,则应始终关闭ScreenUpdating
。
最后,为了提高代码效率,请使用范围对象而不是Cells(x,y)
。
尝试一下,让我知道它是否适合你:
Sub Change()
Dim workingRange As Range
Dim workingCell As Range
'This will make your code run much faster. Make sure to turn it back on at the end as I did.
Application.ScreenUpdating = False
'Sets the range up. (Assumes you have no data below the 1millionth row)
Set workingRange = Range("V5:V" & Range("V1000000").End(xlUp).Row)
'Loops through all the cells in Column V that have data
For Each workingCell In workingRange.Cells
If workingCell.Value = 1 Then Cells(workingCell.Row, 212).Value = "NA"
If workingCell.Value > 1 Then Cells(workingCell.Row, 212).Value = "ND"
Next workingCell
'Turns Screen Updating back on
Application.ScreenUpdating = True
'Clean up
Set workingRange = Nothing
Set workingCell = Nothing
End Sub