vba裏技,技,論理 - 顧客の売上順位
「日付別売上表」というシートがあるとしよう。そのシートの内容から会社別売上順位表を作成する方法を記す。
’ 日付別売上表”をコピーして新しくできたシートの名前を”順位表”とする
Sheets.Copy after:=Sheets(“日付別売上表”)
Activesheet.Name=”順位表
Cells.Find(“日付”)).Value=”順位” ①
Cells.Find(“売上高”).Value = “売上総額”
’顧客の名前別に並び替える
Cells.Find(“顧客名”).Offset(1).Select
Range(Selection, Selection.Previous.End(xlDown).Next).Select
Selection.HorizontalAlignment = xlLeft
Selection.Sort key1:=Cells.Find(“顧客名”) ②
’’顧客別に売上の総計を出す
Cells.Find(“顧客名”).Select
Do
Selection.Offset(1).Select
If Selection.Value = “” Then
Exit Do
End If
If Selection.Value = Selection.Offset(-1).Value Then
v売上高 = Selection.Offset(-1, 1).Value
v売上総額 = Selection.Next.Value
v売上総額 = v売上総額 + v売上高
Selection.Next.Value = v売上総額
Selection.Offset(-1, 1).ClearContents ③
End If
Loop
′二回以上売上のあった顧客の総計以外の売上金額を消す
Cells.Find(“顧客名”).Offset(1).Select
Range(Selection, Selection.End(xlDown)).Offset(, 1).Select ④
Selection.SpecialCells(xlBlanks).Select ⑤
Selection.EntireRow.Delete
’売上総額の大きい方から並べ替える
Cells.Find(“顧客名”).Offset(1).Select
Range(Selection, Selection.End(xlDown)).EntireRow.Select
Selection.Sort key1:=Cells.Find(“売上総額”), Order1:=xlDescending ⑥
’順位に番号を振る
Cells.Find(“順位”).Offset(1).Select
Selection.Value = 1
Selection.Offset(1).Value = 2
Range(Selection, Selection.Offset(1)).Select
Selection.AutoFillDestination:=Range(Selection, Selection.End(xlDown))
’順位の欄の書式を設定する
Cells.Find(“順位”).Offset(1).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormatLocal = “G/標準” ⑦
Selection.HorizontalAlignment = xlCenter
Range(Selection, Cells.Find(“売上総額”).End(xlDown)).Select ⑧
Selection.Borders.Weight = xlHairline
Selection.BorderAround Weight:=xlThin
Cells.Find(“順位”).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Borders(xlEdgeBottom).Weight = xlThin
① 元のシートには顧客名の前に日付と入っていたとする
② 「Key」だけだとエラーになるので、必ず「key1」とする。「key2」とすると並び替えした中で更に並び替えをする場合に使う
③ この数字を消しておかないと後で空白セルを選択できなくなる
④ 複数のセルの右左を選択するときは「next, previous」は作動しないようだ
⑤ ③で消したセルが空白なのでここを選択する
⑥ 「xldescennding」は数字の大きい方から順に並べる方法だ。この場合はこれが当てはまる
⑦ 「日付別売上表」にはそれ用の書式が設定してあるので、その書式を解除して単純な「1, 2, 3」の表示にした
⑧ ここ以降は罫線の設定である。できるだけ見易い表示にすることにより、書面が綺麗に見える
酒巻 修平