Office中国论坛/Access中国论坛

标题: 这个问题不知道该怎么问 [打印本页]

作者: shb49    时间: 2007-1-3 00:18
标题: 这个问题不知道该怎么问
A表:
序号 数值1 数值2 数值3
1
2
3
4
5
6
7
8
9
B表:
序号 数值1 数值2 数值3
2     10     15    30
3      8      9     2
5      1      4     7
7     20     40    60
9     11      6    49
把B表中序号值等于A表中的序号值时,填入相应的数值
新的A表
序号 数值1 数值2 数值3
1
2     10     15    30
3      8      9     2
4
5      1      4     7
6
7     20     40    60
8
9     11      6    49
就实现这样的效果。
我写了一个相应的宏,但效率极低,运行时间太长,因为A表有500项,B表有300项,运行得20多分钟还没完,麻烦大家给看一下,提个好的建议,多谢了。。。。
Sub zh()
Dim sun1
Dim bobo1, bobo2, bobo3, bobo4, bobo5, bobo6, bobo7
Dim temp1, temp2, temp3
temp3 = 4
For temp1 = 6 To 542
  sun1 = Cells(temp1, 1).Value
  For temp2 = temp3 To 227
    Windows("1.xls").Activate
    bobo1 = Cells(temp2, 1).Value
    bobo2 = Cells(temp2, 3).Value
    bobo3 = Cells(temp2, 4).Value
    bobo4 = Cells(temp2, 5).Value
    bobo5 = Cells(temp2, 6).Value
    bobo6 = Cells(temp2, 7).Value
    bobo7 = Cells(temp2, 8).Value
    Windows("业务状况.xls").Activate
    If Val(sun1) = bobo1 Then
          Cells(temp1, 3).Value = bobo2
          Cells(temp1, 4).Value = bobo3
          Cells(temp1, 5).Value = bobo4
          Cells(temp1, 6).Value = bobo5
          Cells(temp1, 7).Value = bobo6
          Cells(temp1, 8).Value = bobo7
          temp3 = temp3 + 1
          Exit For
    End If

  Next temp2

Next temp1

MsgBox "转换完毕!!!"
end sub

[此贴子已经被作者于2007-1-2 16:21:00编辑过]


作者: shb49    时间: 2007-1-3 00:22
B表:
序号 数值1 数值2 数值3
2     10     15    30
3      8      9     2
5      1      4     7
7     20     40    60
9     11      6    49
把B表中序号值等于A表中的序号值时,填入相应的数值

[此贴子已经被作者于2007-1-2 16:23:36编辑过]


作者: shb49    时间: 2007-1-3 00:24
新的A表
序号 数值1 数值2 数值3
1
2     10     15    30
3      8      9     2
4
5      1      4     7
6
7     20     40    60
8
9     11      6    49
就实现这样的效果。
作者: shb49    时间: 2007-1-3 00:25
我写了一个相应的宏,但效率极低,运行时间太长,因为A表有500项,B表有300项,运行得20多分钟还没完,麻烦大家给看一下,提个好的建议,多谢了。。。。

Sub zh()
Dim sun1
Dim bobo1, bobo2, bobo3, bobo4, bobo5, bobo6, bobo7
Dim temp1, temp2, temp3
temp3 = 4
For temp1 = 6 To 542
  sun1 = Cells(temp1, 1).Value
  For temp2 = temp3 To 227
    Windows("1.xls").Activate
    bobo1 = Cells(temp2, 1).Value
    bobo2 = Cells(temp2, 3).Value
    bobo3 = Cells(temp2, 4).Value
    bobo4 = Cells(temp2, 5).Value
    bobo5 = Cells(temp2, 6).Value
    bobo6 = Cells(temp2, 7).Value
    bobo7 = Cells(temp2, 8).Value
    Windows("业务状况.xls").Activate
    If Val(sun1) = bobo1 Then
          Cells(temp1, 3).Value = bobo2
          Cells(temp1, 4).Value = bobo3
          Cells(temp1, 5).Value = bobo4
          Cells(temp1, 6).Value = bobo5
          Cells(temp1, 7).Value = bobo6
          Cells(temp1, 8).Value = bobo7
          temp3 = temp3 + 1
          Exit For
    End If

  Next temp2

Next temp1

MsgBox "转换完毕!!!"
end sub
作者: shb49    时间: 2007-1-3 00:25
bobo2 = Cells(temp2, 3).Value
    bobo3 = Cells(temp2, 4).Value
    bobo4 = Cells(temp2, 5).Value
    bobo5 = Cells(temp2, 6).Value
    bobo6 = Cells(temp2, 7).Value
    bobo7 = Cells(temp2, 8).Value
    Windows("业务状况.xls").Activate
    If Val(sun1) = bobo1 Then
          Cells(temp1, 3).Value = bobo2
          Cells(temp1, 4).Value = bobo3
          Cells(temp1, 5).Value = bobo4
          Cells(temp1, 6).Value = bobo5
          Cells(temp1, 7).Value = bobo6
          Cells(temp1, 8).Value = bobo7
          temp3 = temp3 + 1
          Exit For
    End If

  Next temp2

Next temp1

MsgBox "转换完毕!!!"
end sub
作者: shb49    时间: 2007-1-3 00:26
Cells(temp1, 8).Value = bobo7
          temp3 = temp3 + 1
          Exit For
    End If

  Next temp2

Next temp1

MsgBox "转换完毕!!!"
end sub
作者: shb49    时间: 2007-1-3 00:26
终于问完了。。。。
作者: bossmao    时间: 2007-1-3 04:37
我能想到和你一样。序号要排序,只有唯一值的话加exit for,你都做了。

要不拷到同一个表中处理,表间切换不知道会不会是慢的原因。
作者: bossmao    时间: 2007-1-3 04:42
应该是由b表来找a表。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3