2017-07-07 62 views
0

我有40個不同的excel數據文件(data1.csv〜data40.csv)具有相同的格式。我試圖根據從這40個文件中讀取的所有數據生成一個圖表。 我的想法是,創建一個新的臨時.csv文件(tempOut.csv),我將其中依次複製並粘貼從每個文件中讀取的所有數據,最後使用該臨時文件中的數據生成圖形。VBA複製並粘貼數據跳過第一行

問題是,每個文件都有標題行(ID,名稱,val1,val2 ,,,,)。當我從每個文件複製數據時,我需要刪除此行,或者跳過此行並複製,然後將其粘貼到臨時.csv文件中,除第一個文件外。

如何使用我寫的代碼實現這一點? 這裏是我的代碼:

Dim thisFile As String 'input file name 
Dim outFile As String 'output file name 
Dim dataRead As String 'containing data copied and pasted 
outFile = "tempOut.csv" 
Open outFile For Output As #1 
For i = 1 To 40 
    thisFile = "C:\datafolder\data" + CStr(i) + ".csv" 
    Open thisFile For Input As #2 
    Do Until EOF(2)   'read until the end of the file 
    Line Input #2, dataRead 
    Print #1, dataRead 
    Loop 
    Close #2 
Next i 
Close #1 

此代碼創建一個新的文件,並複製和粘貼,以便從每個文件的所有數據。但是,每次都會複製並粘貼標題行。我添加了if語句,當我= 1時,它讀取所有內容。但我不知道如何複製跳過第一行,從第二個文件讀取到最後一個文件。

任何人都可以幫助我嗎?先謝謝你。

Add: 例如,data1.csv看起來像
| ID |名稱| Val1 | Val2 | ...
| 0 | aaaa | 1 | 2 | ...
| 1 | bbbb | 3 | 4 | ...
| 2 | cccc | 5 | 6 | ...

and data2.csv看起來像
| ID |名稱| Val1 | Val2 | ...
| 3 | dddd | 7 | 8 | ...
| 4 | eeee | 9 | 9 | ...
| 5 | ffff | 7 | 5 | ...

然後,合併的tempOut.csv應該看起來像
| ID |名稱| Val1 | Val2 | ...
| 0 | aaaa | 1 | 2 | ...
| 1 | bbbb | 3 | 4 | ...
| 2 | cccc | 5 | 6 | ...
| 3 | dddd | 7 | 8 | ...
| 4 | eeee | 9 | 9 | ...
| 5 | ffff | 7 | 5 | ...

回答

0

你需要保持跟蹤存在,你在哪裏,在一個文件中的第一個文件,所以添加變量「j」和「K」像下面的代碼:

Dim thisFile As String 'input file name 
    Dim outFile As String 'output file name 
    Dim dataRead As String 'containing data copied and pasted 

    outFile = "tempOut.csv" 
    Open outFile For Output As #1 

    k = 0 

    For i = 1 To 40 
    thisFile = "C:\datafolder\data" + CStr(i) + ".csv" 
    Open thisFile For Input As #2 
    j = 0 

    Do Until EOF(2)   'read until the end of the file 
     If k = 0 Then k = i 
     j = j + 1 
     Line Input #2, dataRead 

     If i = k Or (i > k And j > 1) Then 
      Print #1, dataRead 
     End If 
    Loop 

    Close #2 
    Next i 

    Close #1 
+0

謝謝!但不是你的代碼只是將第一個文件粘貼到tempOut.csv中? –

+0

不,它會對所有其他文件執行第一個文件的所有行和第2行以及更大的行。試試看看。 –

+0

我沒有在那裏看到「或」。 Omg,這很好用!非常感謝你。感謝你,我覺得我已經變得更聰明瞭。 –