[[20030803115543]] 『シートの並べ替え』(はな) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの並べ替え』(はな)

各シートが個人名になっています。
 50音順に並べ替えるにはどうすればいいのですか?


面白そうなので作ってみました。
 Sub シートの並べ替え()
 Worksheets.Add Before:=Sheets(1)
 Sheets(1).Name = "NEW"

 Dim N As Integer, SN As Variant, I As Integer, J As Integer
   On Error Resume Next
   N = Worksheets.Count
        For I = 2 To N
              Worksheets("NEW").Select
              Range("A1").Select
              Selection.Offset(I).Value = ActiveWorkbook.Worksheets(I).Name
        Next I

   Range("A3:A65536").Select
   Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal

   For J = 1 To N
       Worksheets(1).Select
       Range("A2").Select
       SN = Selection.Offset(J).Value
       Sheets(SN).Move After:=Sheets(J)
   Next J

 Worksheets("NEW").Activate
 Application.DisplayAlerts = False
 ActiveWindow.SelectedSheets.Delete
 Application.DisplayAlerts = True

 End Sub

私は、新たなシートにシートの名前を転記する方法しか思いつきませんでした。でも、このコードだと、英語、平仮名、カタカナはOKですが、漢字でシートの名前を入力していると、うまく並びません。先生方、アドバイスお願いします。他に、シートを新規に作らないいい方法もありましたら。 (ピョン)


アクセスありませんね。多分、はなさんは、漢字でシートを入力しているものと思います。それなら、漢字コードの順番になってしまうため、50音順にならないと思います。なので、すべてのシートを選択して、第1行に行を追加してください。その後、作業グループを解除、A1のセルをクリック、シートの名前を入力してから、A1を選択している状態で、書式→ふりがな→表示/非表示を選んでください。これをすべてのシートに適用させます。これで前準備は終わり。多分、下記のコードでシートが50音順に並ぶと思います。やってみてください。

 Sub シートの並べ替え()
 Worksheets.Add Before:=Sheets(1)
 Sheets(1).Name = "NEW"

 Dim N As Integer, SN As Variant, I As Integer, J As Integer
   On Error Resume Next
   N = Worksheets.Count
        For I = 2 To N
              Worksheets(I).Select
              Range("A1").Select
              Selection.Copy
              Worksheets("NEW").Select
              Range("A1").Select
              ActiveCell.Offset(I).PasteSpecial
        Next I

   Range("A3:A257").Select
   Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal

   For J = 1 To N
       Worksheets(1).Select
       Range("A2").Select
       SN = Selection.Offset(J).Value
       Sheets(SN).Move After:=Sheets(J)
   Next J

 Worksheets("NEW").Activate
 Application.DisplayAlerts = False
 ActiveWindow.SelectedSheets.Delete
 Application.DisplayAlerts = True

 End Sub

まだまだ、私も質問を書き込むような未熟者です。もっといい方法があれば、アドバイスがあるはずです。     (ピョン)


 > アクセスありませんね...

 このページにアクセスする人
 土、日 は閑散、
 月、金 は少し少ない、
 火、水、木 が多いのです。
 (kazu)


すいません、初心者なもので英文の意味が理解できません。
 操作の仕方もわかりません。お手数でなければ教えていただければと思います。(はな)


 このような英文をマクロといいます。作り方の例がありますので、
 ↓体験VBAを見てください。(kazu)

http://www.excel.studio-kazu.jp/lib/e1nw/e1nw.html


 > すべてのシートを選択して、第1行に行を追加してください。その後、作業グループを解除、A1のセルをクリック、シートの名前を入力してから、
 > A1を選択している状態で、書式→ふりがな→表示/非表示を選んでください。これをすべてのシートに適用させます。

ここまでは分かりますか?次に、"Alt"を押しながら"F11"を押すと画面が変わります。挿入→標準モジュールを選ぶと、Module1(コード)が出ます。そこに、上の”Sub シートの並べ替え()”から”End Sub”までをコピーしてから貼り付けてください。もちろん、2つ目のほうです。次に、"Alt"を押しながら"Q"を押すとエクセル画面になります。次に、エクセルのツールバーの空白の部分(ヘルプの横かどこか)で、右クリックしてフォームを選びます。ボタンをクリックして、第1行の余白にでも貼り付けてください。マクロの登録で、シートの並べ替えを選んでOKを押します。ボタンの名前はボタン1になっていると思いますので、適当に名前を変更してください。この状態で、ボタンを押すと・・・あとはやってみてください。ただし、前処理は必ず必要ですよ。漢字コードを振り仮名に変換していますので。

あと、英文の意味ですが、これが難しいのです。私も、kazuさんをはじめ、多くの方々にアドバイスを頂いています。ちょっとずつ勉強していってください。本当に難しいですが、マクロを覚えれば、エクセルは楽しくなるでしょう。kazuさんに教えて頂いたアドレス、まずはこれから理解するのがいいと思います。   (ピョン)


どうもありがとうございました。上手くできました。一つ疑問なのは、書式→ふりがな→表示/非表示のところで、ふりがななんですが、漢字変換の際に、たとえば“続”(これは、“つぐ”と読む)のですが、“つぐ”では変換できないので“つづく”で変換して“続く”そして“く”を削除するといったやりかたをしているので、ふりがなに“つづ”とでます。他にも、こういった入力方法をしています。解決法はありますか?(はな)

基本的には、入力したとおりに記憶されますので、入力をきちんと行ってください。どうしても、入力が難しくて、”続”を”つぐ”と読むようなケースなら、書式→ふりがな→編集で正しい呼び方を入力しなおす必要があります。       (ピョン)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.