【发布时间】:2013-04-28 16:34:02
【问题描述】:
南卡罗来纳州阿比盖尔伯里
南卡罗来纳州阿比盖尔伯里
南卡罗来纳州阿比盖尔伯里
*想法是自动将错误放置的州与家乡交换。即南卡罗琳和阿比盖尔伯里
我有 5001 行并试图访问特定的两列(家乡,家乡)。 我正在尝试编写一个交换家乡和家乡值的 vba 脚本,如果我的家乡值错误地放置在家乡列中。我试图通过在工作表中引用所有 50 个状态的范围的数组来做到这一点,并且应该在 if 语句中进行检查。
但是我不断得到不匹配,定义应用程序定义或对象定义错误。新手错误我确定。
这是我的尝试:
Dim states() As String
states = Range("N1:N50").Value
Dim x As Long
Dim y As Long
'go through rows in the d column
For x = 1 To 5001
'Range("D" & x).Select
'for loop for array and if statement
For y = 1 To 50
states() = Cells(y, n)
If y <= 1 Then
'second for loop
Var = Cells(2, 4)
Cells(2, 4) = Cells(2, 5)
Cells(2, 5) = Var
End If
Next y 'go to next 1..50
Next x
【问题讨论】:
-
在
states() = Cells(y, n)中,您的程序中没有定义n变量。这可能是您错误的根源吗? -
您可以简单地使用 Vlookup 功能。你能把数据的截图粘贴到你的帖子中吗?
-
另外,IIRC,您需要在分配一系列值之前正确地重新调整您的
states数组。 -
第一个错误是声明你的数组
As String。要将范围值吸收到这样的数组中,它必须是:Dim states() As Variant
标签: arrays excel if-statement for-loop vba