質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

762閲覧

VBAにて、名前別に昇順にしたい

MiiiRiyu

総合スコア30

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/04/11 08:56

編集2020/04/11 09:09

VBAにて名前別に、項目Cを基準に昇順にしたいです。

[元データ例]
イメージ説明

[望む結果]
イメージ説明

以下、まだ昇順のコードまではかけていません。

VBA

1Sub 昇順() 2 3 Dim 配列 4 Dim 行(200) 5 Dim r As Long 6 Dim p As Integer 7 Dim 名前(100000) As Variant 8 9 Dim 最終行 As Long 10 11 Application.ScreenUpdating = False 12 13 Sheets("sheet1").Select 14 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 15 配列 = Range("A1:D" & 最終行) 16 17 For r = 1 To 最終行 18 名前(r) = 配列(r, 1) 19 20 If 名前(r) <> 名前(r - 1) Then 21 p = p + 1 22 行(p) = r 23 End If 24 If r = 最終行 Then 25 p = p + 1 26 行(p) = r 27 End If 28 Next 29 30 Application.ScreenUpdating = True 31 32 End Sub

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ソートはexcelの機能を使うと、シンプルかつ高速にできます。

vba

1Sub 昇順() 2 Dim ws As Worksheet 3 Set ws = Worksheets("Sheet1") 4 5 Dim rng As Range 6 Set rng = ws.Range("A1").CurrentRegion 'データ範囲取得 7 8 'CustomOrder用文字列生成 9 Dim c As Range, CtmOrd As String 10 For Each c In rng.Columns(1).Cells 11 If InStr(CtmOrd & ",", "," & c.Value & ",") < 1 Then 12 CtmOrd = CtmOrd & "," & c.Value 13 End If 14 Next 15 CtmOrd = Mid(CtmOrd, 2) 16 17 With ws.Sort 18 .SortFields.Clear 19 .SortFields.Add Key:=rng.Columns(1), CustomOrder:=CVar(CtmOrd) 20 .SortFields.Add Key:=rng.Columns(4) 21 .SetRange rng 22 .Header = xlYes 23 .Apply 24 End With 25 End Sub

投稿2020/04/11 09:48

編集2020/04/11 12:17
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MiiiRiyu

2020/04/11 10:27

ご回答くださりありがとうございます! 短いコードで実現できるのですね! 2つ質問です。 1.実行すると、見出し?部分が一番下にくるので上に固定する方法 2.名前を追加すると(例:石田)、昇順が機能しない。 (マクロ側のCustomOrder:の名前にも石田を追加しているのですが、 実行してもうまく昇順になりません。) ご教授いただけると幸いです。
MiiiRiyu

2020/04/11 10:52

1について、先ほど再度実行したところ、 見出し?部分がそのままで昇順されましたが、 なぜ出来なかったのかわかりません。 2については、石田の部分だけ、やはり昇順になりません。
MiiiRiyu

2020/04/11 12:00

2について、 手入力したデータだとうまくいかないことがわかったので、調べてみたところ、並べ替えオプションの「ふりがなを使わない」設定をしたところ、解決しました!ありがとうございます!
hatena19

2020/04/11 12:19

データを追加したり編集しても、コードを修正する必要がないように回答のコードを改善しました。 ご確認ください。
MiiiRiyu

2020/04/12 07:02

お気遣いくださりありがとうございます^^ 助かりました♪
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問