■12984 / 親階層) |
CSVデータ→エクセル(ソート)
|
□投稿者/ 佐藤 -(2016/04/13(Wed) 16:53:03)
| 売上順位表を作成したいのですが
CSVの売上を降順にソートして、担当者、店番、店名、売上を売上順位表のエクセルに情報を反映させたいです。
毎月シートを作成しているので、シート作成と並び替えは分かったのでVBAを作成してみたのですが、CSVの情報を
エクセルに反映するVBAでつまってしまいました。
分かりづらいVBAで、すみません。ご教授のほど、よろしくお願いします。
【CSVシート】
A B C D E F
1 場所 担当番号 担当者 店番 店名 売上 …
2 東京 1111 田中 12345 果物屋 1,500…
3 大阪 2222 佐藤 23456 文房具屋 10,000…
…
11 総計 35,000…
【売上順位表エクセルシート】
A1=売上月の日付(ex:4/1)
A12:A119=店番
D12:D119=店名
M12:M119=担当者
O12:O119=売上(降順)
A … D … M … O …
1 4/1
2
…
11 店番 店名 担当者 売上
12 23456 文房具屋 佐藤 10,000
13 12345 果物屋 田中 1,500
…
119
【コード】
Sub SheetCopy()
Dim myBook As Workbook
Dim OpenFileName As String
Dim myb_name1 As String
Dim myb_name2 As String
Dim mySh_name As String
Dim mySh1 As Worksheet, mySh2 As Worksheet
Dim mySh_name1 As String
Dim wSheetName As Variant
Dim wNewSheetName As Variant
Dim NewDate As Date
Dim Sh As Worksheet
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
NewDate = DateAdd("m", 1, Range("A1").Value)
wNewSheetName = Format(NewDate, "yyyy.m")
'同名シートの有無を確認
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name = wNewSheetName Then
MsgBox "すでに同名のシートが有りますので終了します "
Exit Sub
End If
Next Sh
'ワークシートのコピー
ActiveSheet.Copy after:=ThisWorkbook.Sheets(Sheets.Count)
'コピーしたシート名を変更する
ActiveSheet.Name = wNewSheetName
Range("A12:O119").ClearContents
'A1セルに新しい日付を入力
Range("A1").Value = NewDate
'転記先シートを変数にセット
myb_name1 = ThisWorkbook.Name
mySh_name1 = ActiveSheet.Name
Set mySh1 = Workbooks(myb_name1).Sheets(mySh_name1)
'CSVファイルを開く
OpenFileName = Application.GetOpenFilename("CSV ファイル (*.csv),*.csv")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
End If
myb_name2 = ActiveWorkbook.Name
mySh_name = Left(myb_name2, Len(myb_name2) - 4)
'CSVシートを変数にセット
Set mySh2 = Workbooks(myb_name2).Sheets(mySh_name)
'並べ替えを実行する
Range("A12:O119" & wLastGyou - 1).Sort _
Key1:=Range("O12"), _
Order1:=xlDescending, _
Header:=xlNo
End Sub
|
|