ExcelVBAで自分の設定した通りの順番に並べ替える方法~担当者順にデータをソート~
きむおば
このブログではアフィリエイト・アドセンス広告を利用しています
当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。
Excelを仕事で日常的に使っている事務職の方に、知っているとちょっと作業効率がアップする小技を紹介していきたいと思います。
今回は、ExcelVBAで自分の好きな通りの順番に並べ替えてしまう方法です。
例えば、顧客情報を各担当者が使いやすいように担当者順に並べ替えたい時がありますよね。
その時に、担当者の氏名の五十音順ではなくて、部長->課長->主任->先輩->私のような立場の目上の人から順番にしたい時ってありませんか。
コピペでOKなサンプルコードをご紹介します。
目次(読みたいところへジャンプ!)
データを担当の役職順に並べ替えるためのExcelVBAサンプルコード
前提条件として、次のような顧客データが作成されているとしています。
担当 | 区分 | クライアント名 | クライアント名ふりがな |
---|---|---|---|
主任 | 法人 | お客様A | おきゃくさまえー |
社長 | 法人 | お客様B | おきゃくさまびー |
私 | 個人 | お客様1 | おきゃくさま1 |
主任 | 個人 | お客様2 | おきゃくさま2 |
部長 | 個人 | お客様C | おきゃくさましー |
Excelの「list」ワークシートにあるこのデータを、①担当者の偉い順②法人から個人の順③クライアントふりがな五十音の昇順に並べ替えるためのサンプルコードは、次のようになります。
'データの並び替え Worksheets("list").Sort.SortFields.Add Key:=Range("A:A"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="社長,部長,課長,主任,私" _ , DataOption:=xlSortNormal Worksheets("list").Sort.SortFields.Add Key:=Range("B:B"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="法人,個人", _ DataOption:=xlSortNormal Worksheets("list").Sort.SortFields.Add Key:=Range("D:D"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("list").Sort .SetRange Range("A:D") '並べ替える範囲の指定 .Header = xlYes '1行目はタイトル .MatchCase = False '大文字と小文字を区別しない .Orientation = xlTopToBottom '並べ替えの方向を行に .SortMethod = xlPinYin '日本語のふりがな順に .Apply 'ソートの実行 End With
意図する結果になったでしょうか。
私は、頼まれた仕事を作業効率化でなんとか生み出しだ時間に、ExcelVBAでどんどん自動化しています。
手入力、関数とマクロを使っていた時は、いくらショートカットキーやブラインドタッチを駆使しても限界があります。それが、ExcelVBAで自動化してしまうと2秒で終わっちゃうんですよね。そして、また生み出された時間でどんどん仕事を無くしていくというw
今後も、実際の仕事で使っているExcelVBAの小技をご紹介していきますね。