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」の表示にした

⑧ ここ以降は罫線の設定である。できるだけ見易い表示にすることにより、書面が綺麗に見える

酒巻 修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です