转载:http://zhidao.baidu.com/question/2201873141116490348
Private Sub CommandButton1_Click()
With ActiveSheet
For i = 4 To Range("A65536").End(xlUp).Row
Sheets("当月").Cells(i, 3) = Application.WorksheetFunction.VLookup(Sheets("当月").Cells(i, 3),IF({1,0}Sheets("2013年").[C2:C129], Sheets("2013").[G2:G129]),2,0)
If Sheets("当月").Cells(i, 3) = "#N/A" Then
Sheets("当月").Cells(i, 3) = ""
End If
Next
End With
End Sub
代码的意思基本上就是以上内容 ,但是不熟悉VBA的语言,请高手帮忙看一下,应该怎样规范语言,谢谢
最佳答案:
IF({1,0}是EXCEL函数用法,写到VBA里大概有问题。
既然用到VBA,完全可以用循环替代Vlookup,效率更高。
123456789101112131415 Private Sub CommandButton1_Click()r = Range("A65536").End(xlUp).Rowcrr = Sheets("2013年").[C2:C129] '将单元格区域存入数组,提高运行效率grr = Sheets("2013年").[G2:G129]For Each icell In Sheets("当月").Range("C4:C" & r)tmp = ""For i = 1 To UBound(crr) If icell = crr(i, 1) Then tmp = grr(i, 1) Exit For End IfNext iicell.Value = tmpNextEnd Sub
追问 恩,基本是我想要的结果,但细节之处在咨询一下。
我运行了下代码,似乎将原来 Sheets("当月")C列中的数据都替换掉了,我希望保留C留中的数据,将数据保存在其他空白列里,比如D列里。
“'将单元格区域存入数组,提高运行效率”载入的区域能不能改成一个变量比如,如果以后C130有数据就变成[C2:C130],c131有数据就变成[C2:C131]以此类推...
不胜感激
回答你的问题都可以实现:
1、循环变量icell是C列的单元格,用icell.offset(0,1)=tmp即可保存在D列
2、crr = Sheets("2013年").range("C2:C" & r1]
其中r1为变量,计算式可以为:r1=Sheets("2013年").Range("C65536").End(xlUp).Row
1103

被折叠的 条评论
为什么被折叠?



