同じ形式の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 | ...
ありがとうございました!あなたのコードはtempOut.csvに最初のファイルだけを "貼り付け"ませんか? –
いいえ、最初のファイルと2行目のすべての行とそれ以外のすべてのファイルの行を行います。それを試してみてください。 –
私はそこに "Or"が見えませんでした。 Omg、これは素晴らしい作品です!どうもありがとうございました。私はあなたに感謝しちゃったような気がします。 –