2017-07-07 21 views
0

同じ形式の40種類のExcelデータファイル(data1.csv〜data40.csv)があります。私は、これらの40のファイルから読み取られたすべてのデータに基づいてグラフを生成しようとしています。 私の考えは、新しい一時的な.csvファイル(tempOut.csv)を作成し、各ファイルから読み込んだすべてのデータを1つずつ順番にコピーして貼り付け、最後にその一時ファイルのデータを使ってグラフを生成します。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文を追加しました。そうすれば、i = 1のときにすべてが読み込まれます。しかし、2番目のファイルから最後のファイルまで、最初の行をスキップする方法をよくわかりません。

誰でもこの手伝いできますか?前もって感謝します。

追加: たとえば、data1.csvは
のようになります。ID |名前| Val1 | Val2 | ...
| 0 | aaaa | 1 | 2 | ...
| 1 | bbbb | 3 | 4 | ...
| 2 | cccc | 5 | 6 | ...

と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

私はそこに "Or"が見えませんでした。 Omg、これは素晴らしい作品です!どうもありがとうございました。私はあなたに感謝しちゃったような気がします。 –

関連する問題