EXCEL VBA csvデータ読込・出力について 

EXCEL VBAについて質問です。

マクロファイル内で出力ボタンを押下した際に、
あるcsvファイルの内容を1行ずつ読み込み、処理完了時に新しいエクセルファイルを出力させ、
出力ファイルで表のようなものに結果を表示させたいのですが、一部の重複データがある場合は、次の行に表示させたいです。

具体例は以下です。


・csvファイル
|果物|地区|売上個数|値段|
|みかん |A地区|10 |150|
|みかん |A地区|5 |300|
|リンゴ |A地区|10 |100|
|メロン |A地区|10 |500|
|リンゴ |B地区|30 |300|
|リンゴ |A地区|10 |100|

・出力したエクセルファイルのイメージ
|順位|果物 |地区|売上個数|値段|
|1|リンゴ|B地区|30 |300|
|2|リンゴ|A地区|20 |200|
|3|みかん|A地区|15 |450|
|4|メロン|A地区|10 |500|


出力したエクセルファイル側では、売上個数が多い順に並べたいです。
csvファイルを1行ずつ読み込んだ際に、果物列と地区列が同じ値の場合は売上個数と値段を加算するようにしたいです。(同じ果物であっても、地区が異なる場合は別の行に表示させたいです。)

現在、マクロ側で果物列または地区列が一致しない場合はひとつ下の行に追加するよう記述しております。
※記述しているマクロは以下です。


If Range("C8").Value <> csvData(i, 1) Then
□If Range("D8").Value <> csvData(i, 2) Then
□□Range("C9").Value = csvData(i, 1)
□□Range("D9").Value = csvData(i, 2)
EndIf

※C8→出力したいエクセルファイルの順位1位の果物列のセル
※D8→出力したいエクセルファイルの順位1位の地区列のセル
※C9→出力したいエクセルファイルの順位2位の果物列のセル
※D9→出力したいエクセルファイルの順位2位の地区列のセル


しかし、上記の記述の場合、果物の種類または地区の種類が増えるにつれ、If文が増えてしまいます。
さらにその右の列に売上個数、値段を表示させる記述を記載するとより複雑になってしまいます。

上記の方法以外でほかの記述方法はございますでしょうか。

ご回答のほど、宜しくお願い致します。

コメントを投稿

0 コメント