在excel vb中通过循环传输数据

时间:2018-05-02 05:20:59

标签: excel vba excel-vba

我在excel文件中有这种数据

Exportfile.xlsx

      A        B
1)    Head  31-Dec-2017
2)    a         23
3)    b         45
4)    c         46

Datasheet.xlsx

在像这样的数据表数据中

1)           **A**  
2) ***QUARTER          Data***
3) 31 Mar 2017  
4) 30 Jun 2017  
5) 30 Sep 2017  
6) 31 Dec 2017  
7)  
8)  
9)         **B**    
10) ***QUARTER          Data***
11) 31 Mar 2017 
12) 30 Jun 2017 
13) 30 Sep 2017 
14) 31 Dec 2017 
15) 
16) 
17)         **C**   
18) ***QUARTER          Data***
19) 31 Mar 2017 
20) 30 Jun 2017 
21) 30 Sep 2017 
22) 31 Dec 2017 

现在我想将exportfile中的值粘贴到数据表中,并希望这样的数据

1)           **A**  
2) ***QUARTER          Data***
3) 31 Mar 2017  
4) 30 Jun 2017  
5) 30 Sep 2017  
6) 31 Dec 2017         23
7)  
8)  
9)         **B**    
10) ***QUARTER          Data***
11) 31 Mar 2017 
12) 30 Jun 2017 
13) 30 Sep 2017 
14) 31 Dec 2017          45
15) 
16) 
17)         **C**   
18) ***QUARTER          Data***
19) 31 Mar 2017 
20) 30 Jun 2017 
21) 30 Sep 2017 
22) 31 Dec 2017          46

现在我做这个代码

Sub copy_data(File_Name)
   For i = 2 To 4
Windows("Exportfile.xlsx").Activate
    Sheets("ESheet").Select
         Cells(i, 2).Select
     Selection.Copy
Windows(File_Name).Activate
    Sheets("Dsheet").Select
   On Error Resume Next
  **j = '' here what i do** 
    Cells(j, 2).Select
   On Error Resume Next
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Next
End Sub

现在在J行上面的代码我应该怎么做,所以值从导出文件复制并在2017年12月31日通过循环粘贴到数据表中

任何解决方案?

1 个答案:

答案 0 :(得分:0)

如果模板是静态的,如上所述,这只是数学。使用6在start之外声明并初始化变量for,并在循环内为j添加公式

j = start + ((i-2) *8)