2016-09-13 44 views
0

所以基本上我只是在2个小时前学习宏的excel。 所以我只是想从这门语言学到一些基础知识,所以问题是我只想从No.Id的另一个工作簿获得,并在列之间插入一个新列。 对于这个例子,我有数据这样在1日的工作簿是在左边,右边是第二个工作簿 1st and 2nd Workbook从另一个文件宏中获取价值excel

而在第二册我要插入的列之间的新列,并把基于值No.Id后点击CommandButton1的

所以第二个工作簿变成这样After Macro

所以你能帮助我,并告诉我它是如何工作的? pleaseee ...:d

+1

一个解决的问题之一。了解如何打开其他工作簿,如何插入列等。然后,如果您遇到这些任务中的任何一个问题,请咨询有关特定问题的帮助。 – arcadeprecinct

+0

如果基本命令像插入列并打开另一个工作簿,我可以这样做,但我唯一的担心是从另一个工作簿中获取值,并使值与No.Id相同,就像图片一样。我的意思是它真的让我感到沮丧:(。顺便说一句,谢谢你的建议.. :) –

+0

这将是从其他工作簿复制值的任务之一。如果你可以打开另一个工作簿,它应该没问题,因为你只需要读取和写入单元格值? – arcadeprecinct

回答

0

尝试:

Dim wsSource As Worksheet 
Set wsSource = ActiveWorkbook.Worksheet("NAME SOURCE SHEET") 
Dim wsOutput As Worksheet 
Set wsOutput = ActiveWorkbook.Worksheet("NAME OUTPUT SHEET") 
Dim ID as Range 
Dim FindID as Range 
Dim lRowSource as Integer 
Dim lRowOutput as Integer 

lRowSource = wsSource.Range("A" & Rows.Count).End(xlUp).row 
lRowOutput = wsSource.Range("A" & Rows.Count).End(xlUp).row 

With wsOutput 
    Range("B1").EntireColumn.Insert 

    For each ID in .Range("A1:A" & lRowSource) 
    Set FindID = wsSource.Range("A1:A" & lRowOutput).Find(What:=ID, LookIn:=xlValues, lookat:=xlWhole) 

    If Not FindID is Nothing then 
     wsSource.Range("B" & FindID.Row).Copy Destination:=wsOutput.Range("B" & FindID.Row) 
    Else 
     Exit Sub 
    End If 
End With 

或者你也可以使用:

Dim wsSource As Worksheet 
Set wsSource = ActiveWorkbook.Worksheet("NAME SOURCE SHEET") 
Dim wsOutput As Worksheet 
Set wsOutput = ActiveWorkbook.Worksheet("NAME OUTPUT SHEET") 
Dim i As Long 

wsOutput.Range("B1").EntireColumn.Insert 

For i=1 To wsSource.UsedRange.Rows.Count 
    If wsSource.Range("A" & i) = wsOutput.Range("A" & i) Then 
     wsSource.Range("B" & i).Copy Destination:=wsOutput.Range("B" & i) 
    End If 
Next i 
相关问题