高手救急!!! 重赏
TD.xsl表当中有俩个工作表:sheet1和sheet2,两个工作表当中都有一列小区ID号而且是唯一的,我想建立个宏将这两个工作表连接起来以小区ID为准。sheet1只有一列小区ID,用宏将sheet2的ID与sheet1ID关联起来,当我打开sheet1并按下宏快捷键时,sheet1 将自动匹配sheet2ID,小区ID相同则将sheet2当中相应ID行内容复制到sheet1当中,当sheet1小区ID找不到匹配ID 时,sheet1相应ID行内容为空白。哪位高手能帮忙指点一下啊,谢谢!
Const cstMaxRow1 = 1325 'sheet1's id column's max row
Const cstMaxRow2 = 1325 'sheet2's id column's max row
Dim lngRow1, lngRow2 As Long
Dim str1, str2 As String
Dim a, b As Long
Sub Macro1()
'
' Macro1 Macro
'
' 快捷键: Ctrl+z
a = 1
b = 1
For lngRow1 = 2 To cstMaxRow1
str1 = Sheets(1).Cells(lngRow1, 11).Value
If a <> b Then
GoTo w
End If
For lngRow2 = 1 To cstMaxRow2
If a <> b Then
GoTo e
End If
w:
str2 = Sheets(2).Cells(lngRow2, 1).Value
If str1 = str2 Then
Sheets("sheet2").Select
Cells(lngRow2 - 6, 2).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("sheet1").Select
Cells(lngRow1 - 1, 16).Select
ActiveSheet.Paste
a = a + 1
End If
Next lngRow2
e:
Next lngRow1
End Sub
以上语句能实现sheet2当中内容复制到sheet1当中,但是不能判断ID是否相同,请高手指点问题出在哪里?谢谢 --------------------编程问答-------------------- 问题1:
Sheets("sheet2").Select
Sheets("sheet1").Select
应改为
Sheets("sheet2").Activate
Sheets("sheet1").Activate
问题2:
Cells(lngRow2 - 6, 2).Select有问题。试想,如果lngRow2<7会怎么样?那么lngRow2 - 6 <1,此行语句将造成错误,“下标越界”。
问题3:
GoTo用得太乱,程序逻辑混乱。 --------------------编程问答-------------------- 先解决这几个问题再说。至于功能上的问题,还没有细看。 --------------------编程问答-------------------- 错误1:高手救急!!! 重赏 ,我更喜欢楼主换成重谢
错误2:TD.xsl表当中有俩个工作表,xsl文件格式.....
所以问题不在考虑的范围 --------------------编程问答--------------------
Private Sub Command1_Click()--------------------编程问答-------------------- 用我这个方法写好多了
r1 = sheet1.Range("a65535").End(xlUp).Row '判断行数,关键字段
r2 = sheet2.Range("c65535").End(xlUp).Row
For i = 1 To r1
For j = 1 To r2
If sheet1.cells(i, 1) = sheet2.cells(j, 1) Then
'''''复制语句,你要怎么复制就怎么复制,不帮你写了
End If
Next j, i
End Sub
不用go to 来 go to 去的 --------------------编程问答-------------------- 给点分,好不? --------------------编程问答-------------------- Sheets("sheet2").Select
Cells(j, 2).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("sheet1").Select
Cells(i, 16).Select '''''复制语句
按4楼添加复制语句 但是执行结果没有复制过去啊? --------------------编程问答-------------------- Sheets("sheet2").Activate
Sheets("sheet1").Activate --------------------编程问答--------------------
我说大哥您能不能不要老是写宏的语句呀,你什么时候引用了selection对象?我的代码中没有select任何对象,
正确的代码应该是:
if '''''''''''''''''' then
sheet1.cells(X,X)=sheet2.cells(X,X)
end if
有了以上语句,你爱怎么复制就怎么复制了,明白没有? --------------------编程问答-------------------- 行行好,给点分 --------------------编程问答-------------------- 我记得我回复过这个贴子的,这不会是重发的吧?
用七楼的就行,我一直用,只是二个表之间不用select或Activate 也行
如果表多了,必须用Activate ,曾有一次我是四个表之间倒数据,开始没用Activate 总是不成功,(原来一直日二个表间进行数据复制),后来用了就行了 --------------------编程问答-------------------- 使用range.find()要快很多倍 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- --------------------编程问答-------------------- EXCEL用可以直接用VLOOKUP函数完成你的要求
补充:VB , VBA