『シートの並び替え』(くぅー) 「提出シート」「データシート」・・・の順番で、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