[[20180606173108]] 『シートの並び替え』(くぅー) ページの最後に飛ぶ

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

 

『シートの並び替え』(くぅー)

「提出シート」「データシート」・・・の順番で、50枚ほどあり
これを、並び替えをしたいのですが何かいい方法を教えてください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


こんばんは ^^
http://www.moug.net/tech/exvba/0040060.html
が参考になるかと。
(隠居じーさん) 2018/06/06(水) 17:42

2つのシート名がセットで存在するのでしょうか? 例えば、「提出1」「データ1」「提出2」「データ2」でしょうか? それとも、「提出」「データ1」「データ2」「データ3」のように、データシートだけ複数なのでしょうか? また、「データ1」「データ2」「データ12」のように、数字表現していて桁数が変わる場合はありますか?

いずれの場合でも、全シート名を抜き出し、別シートまたは配列上で並び替え、それを元にシート移動するマクロを書けば良いと思います。 難易度はシート名のルール次第。
(???) 2018/06/06(水) 17:43


>これを、並び替えをしたいのですが

どんな基準で並べ替えするのでしょう?

セルにシート名一覧を作ってエクセルの並び替え機能で並び替えられる順番でいいのかなぁ?

(まっつわん) 2018/06/06(水) 19:47


皆様

返信遅くなりました。

「提出シート1」「データシート1」「提出シート2」「データシート2」・・・・
と、各提出シート1枚につきデータシートは1枚です。

「提出シート1」「データシート1」の1セットとして1〜順番に並べ替えたいです。

まっつわん 様  ???様
はい、シート名一覧を、作成してそれで並び替えが出来るのであればそのやり方を
知りたいです。
(くぅー) 2018/06/09(土) 18:33


 >まっつわん 様  ???様
 >はい、シート名一覧を、作成してそれで並び替えが出来るのであればそのやり方を
 >知りたいです。
いやいや、
セルにシート名を手で入力して、エクセルの機能で、
昇順とか降順で値を並び替え出来るじゃないですか?
その順番でいいのかいけないのかです。

 >「提出シート1」「データシート1」の1セットとして1〜順番に並べ替えたいです。

 	データシート1
	データシート2
	提出シート1
	提出シート2

シート上で名前を並び替えたらこうなるので、
ちょっと、僕では難しいですね^^;

他の方の回答をお待ちください。

(まっつわん) 2018/06/09(土) 18:46


 >「提出シート1」「データシート1」の1セットとして1〜順番に並べ替えたいです。 

 Sub test()
     Dim ws As Worksheet, temp As String, myNum As Long
     Dim i As Long, ii As Long, SL As Object
     Set SL = CreateObject("System.Collections.SortedList")
     With CreateObject("VBScript.RegExp")
         .Pattern = "(.+[^0-90-9])([0-90-9]+)$"
         For Each ws In Worksheets
             temp = ws.Name
             If .test(temp) Then
                 myNum = Val(StrConv(.Execute(temp)(0).submatches(1), 8))
                 temp = .Execute(temp)(0).submatches(0)
                 If Not SL.Contains(myNum) Then
                     Set SL(myNum) = CreateObject("System.Collections.SortedList")
                 End If
                 SL(myNum)(temp) = ws.Name
             End If
         Next
     End With
     For i = SL.Count - 1 To 0 Step -1
         For ii = 0 To SL.GetByIndex(i).Count - 1
             Sheets(SL.GetByIndex(i).GetByIndex(ii)).Move before:=Sheets(1)
         Next
     Next
 End Sub
(seiya) 2018/06/09(土) 19:20

コメント返信:

[ 一覧(最新更新順) ]


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