循环给数组赋值,每循环一次数组的UBOUND不一致,请问如何解决?
EXCEL文件请到网盘下载,谢谢!
链接: http://pan.baidu.com/s/1gdgQY0V 密码: lj52
其实条件很复杂,以后需要慢慢加,目前我是想先搞懂怎么做才不出错。。
追答Public Sub 航程判断()
Dim arr, arr1, i%
For i = 2 To [a1000000].End(xlUp).Row
arr = Array("", "", "", "", "")
arr1 = Split(Range("a" & i), "-")
For j = 0 To UBound(arr1)
arr(j) = arr1(j)
Next
If arr(0) "北京" And (arr(2) = arr(0) Or arr(2) = "") Then
Cells(i, 2) = arr(1)
ElseIf arr(0) "北京" And arr(1) = "北京" And (arr(4) = arr(0) Or arr(3) = "") Then
Cells(i, 2) = arr(2)
ElseIf arr(0) = "北京" And (arr(2) = "北京" Or arr(2) = "上海" Or arr(2) = "") Then
Cells(i, 2) = arr(1)
ElseIf arr(0) = "北京" And (arr(4) = "北京" Or arr(3) = "") Then
Cells(i, 2) = arr(2) & "(转)"
ElseIf arr(0) = "北京" Then
Cells(i, 2) = arr(1)
ElseIf arr(1) = "北京" Then
Cells(i, 2) = arr(2)
End If
Next i
End Sub
其实就是先处理A2,将判断出来的值赋值给B2
然后再处理A3,将判断出来的值赋值给B3
对A列中每一个单元格的处理都是单独的,不涉及其他单元格,处理完一个,再循环至下一个处理。
我是要把每一行这样的数据分割成数组 但不是单纯的把数组中第一个元素赋值给单元格2,而是有一定判断条件,可能是这个数组中第一个元素赋值给单元格2,也可能是第二个元素,也可能是第三个元素。。这个是需要根据条件来判断的
根据什么条件呢~看你有的起飞不能在北京,有的可以~·考验你功力了 言简意赅的总结规则
因为数组元素大小的不同 我还是建议你先用
if ubound(数组)=1 then
elseif ubound(数组)=2 then
类推
end if
先用数组大小来过滤~再进行条件判断 这样就不会因超过数组范围而报错
1、如果第一个城市不是北京,第三个城市为空或者等于第一个城市,则B列赋值为第二个城市
2、如果第一个城市是北京,第三个城市是北京,则B列对应的行赋值为第二个城市
其他的判断条件我就不写了 因为写多了也浪费您的时间来做 就麻烦您按上面两个条件给我举个例子吧,非常感谢!
if ubound(数组)=1 then
’if 你的条件
elseif ubound(数组)=2 then
’if 你的条件
end if
if ubound(数组)=1 then
if 条件1 then
elseif 条件2 then
elseif 条件3 then
elseif ubound(数组)=2 then
’if 你的条件
end if
是这样吗?
也谢谢您,可惜在同一个提问里不能给两个不同的人分不然我也会给您分的。。