![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excel2007で名簿を作成しています。
新規のデータがあれば、表の一番下に足していくのですが、
新規データを入れた後にあいうえお順に並べ替えをしたいと思います。
名簿にはたくさんの項目があり、1件につき 4行7列 を使用しており、
セルの結合をしている個所もあります。
上手く並べ替えるVBAを教えていただきたく、ご質問させていただきます。
名簿のB13:B14(結合セル)、B17:B18、B21:B22・・・・・にひらがなで名前が入っているので、
このB列をもとにあいうえお順にしたいと思っています。
(B15:B16、B19:B20、B23:B24・・・・には、漢字で名前が入っています)
以前同じ質問をさせていただきましたが、なかなかアドバイスをいただけず、
自分でも考えてみましたが、うまくいかないため、再質問をさせていただきました。
お詳しい方、どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
結合セルを交えた表なので,エクセル本来の並べ替え機能は使えません。
というワケで並べ替えを自前でマクロの中でプログラムしてやる事になりますがメンドクサイので,エクセルの機能だけで実現してみます。
前提:
>名簿のB13:B14(結合セル)、B17:B18、B21:B22・・・・・にひらがなで名前が入っているので、
名簿の本体は「13行目から始まっている」とします。
その上にあるだろうタイトル行は無視です。
Sub macro1()
Dim sz As Worksheet
Dim sx As Worksheet
Dim s0 As Worksheet
Dim i As Long
Dim n As Long
’気になるなら次の行のコメントアウトを外す
’application.screenupdating = false
Set s0 = Worksheets("名簿のシート") '試す前に名簿のシート名を記入すること
Set sx = Worksheets.Add
’データ採取
For i = 13 To s0.Range("B65536").End(xlUp).Row Step 4
If s0.Cells(i, "B") <> "" Then
n = n + 1
sx.Cells(n, "A") = s0.Cells(i, "B")
sx.Cells(n, "B") = i
End If
Next i
’並べ替え
sx.Range("A:B").Sort key1:=sx.Range("A1"), order1:=xlAscending, header:=xlNo
Set sz = Worksheets.Add
For i = 1 To n
s0.Cells(sx.Cells(i, "B"), "A").Resize(4, 1).EntireRow.Copy Destination:=sz.Cells(13 + (i - 1) * 4, "A")
Next i
’復元
sz.Range("A13").Resize(n * 4, 1).EntireRow.Copy Destination:=s0.Range("A13")
Application.DisplayAlerts = False
sx.Delete
sz.Delete
Application.ScreenUpdating = False
End Sub
早々のご回答、そして訂正のコメントをいただきましてありがとうございました。
いま、アドバイスいただいたとおりにやってみましたら
できました!!
こんなにシンプルな感じでできるとは思っていなかったので、
とても驚いています。
これから、どのようになっているのか、よく見て勉強します。
大変助かりました。
ありがとうございました!!
No.2
- 回答日時:
最後に思いつきで書き足したら間違いちゃいました。
マチガイ:
最後の
Application.ScreenUpdating = False
訂正:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでレコードを別テーブル...
-
同窓会名簿で、亡くなった方の記載
-
名簿図書館って
-
新橋の名簿図書館について
-
差し込み印刷 1ページに複数の...
-
国立病院機構の採用者名簿に、...
-
亡くなられた方の表現
-
Excel.名簿一覧表から別シート...
-
Access]2つのテーブルを比較し...
-
柔道整復師名簿はみれますか?
-
「○日までに」の意味、その日は...
-
補足ありがとうございますと 補...
-
派遣社員です。私語がおおいと...
-
同期と給料に差がありました。 ...
-
女性労働者は増えてどの業界に...
-
割りと夜職って 狭い業界だった...
-
見学してみたいです。は敬語で...
-
社会人で坊主はやめてね
-
ガソリンスタンドって何業界?
-
社会福祉法人の略語は(株)のよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同窓会名簿で、亡くなった方の記載
-
Accessでレコードを別テーブル...
-
亡くなられた方の表現
-
Access]2つのテーブルを比較し...
-
差し込み印刷 1ページに複数の...
-
エクセルで学年クラスが変わっ...
-
同窓会の名簿に欠席者・物故者...
-
国立病院機構の採用者名簿に、...
-
こんな時の言い回し
-
【緊急】エクセルで複数の同じ...
-
昔の友達を探したい
-
新橋の名簿図書館について
-
卒業者名簿にメールアドレスを...
-
物故者名の一覧表を作成すると...
-
保護者名簿を作成したいが、依...
-
名簿図書館って
-
携帯のアドレス帳に「山田さん...
-
知らない番号から電話が来て、出...
-
Excel.名簿一覧表から別シート...
-
同窓会名簿作成のための、個人...
おすすめ情報