Excelシートの指定順に並び替え方法とは?

このQ&Aのポイント
  • Excelのシートを指定順に並び替える方法を教えてください。
  • シートの位置を変えずに指定した順番で並び替える方法を教えてください。
  • Excel2003でのシートの指定順に並び替える方法を教えてください。
回答を見る
  • ベストアンサー

Excel 指定順にシートの並び替え VBA

お世話になっております。 今回は、シートの並び替えをしたいと考えています。 例として、 シート名 販売台数 販売類型 統計 商品金額 全データ 更新履歴 とあったとします。 シートを削除し、作り直すというマクロを組んでいるため シートの位置をわざわざ変えるのは面倒です。 シートを指定順に並べ替える方法がしりたいです。 販売台数 販売類型 統計 商品金額 全データ 更新履歴 ↓ 更新履歴 統計 全データ 商品金額 販売台数 販売累計 商品金額 販売台数 統計 全データ 販売類型 更新履歴 ↓ 更新履歴 統計 全データ 商品金額 販売台数 販売累計 かならず、矢印の下のように並び替えたいと思います。 この設定方法を、 WorkSheet(1)=更新履歴 WorkSheet(2)=統計 などと位置を決めて動かせたら良いと思っているのですが、 方法はあるのでしょうか? シートを移動する、MOVEとかもありましたが、 考えるだけで気が遠くなりそうです… ちなみに、Excel2003を仕様しております。 回答よろしくお願いいたします!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

最終的な並びが固定ならMoveでもいいと思うのですが、どうでしょうか。 Sub sheet_sort() ' ソート順 Dim sort(5) As String sort(0) = "更新履歴" sort(1) = "統計" sort(2) = "全データ" sort(3) = "商品金額" sort(4) = "販売台数" sort(5) = "販売累計" Dim i As Integer For i = 1 To UBound(sort) Sheets(sort(i)).Move after:=Sheets(sort(i - 1)) Next i End Sub

satoron666
質問者

お礼

回答ありがとうございました! 二人とも同様の内容でしたので、ベストアンサーは早かった方にさせて頂きます。 プログラムの書き方も色々あるのだと考えさせられました! 本当にありがとうございました! これからも勉強続けます!

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

並べ替えしたいシートの先頭から順に後ろへ移動すればいいです。 Sub macro() Dim A As Variant, I As Integer A = Array("更新履歴", "統計", "全データ", "商品金額", "販売台数", "販売累計") For I = 0 To UBound(A) Worksheets(A(I)).Move after:=Worksheets(Worksheets.Count) Next I End Sub >販売台数 [販売類型] 統計 商品金額 全データ 更新履歴 >↓ >更新履歴 統計 全データ 商品金額 販売台数 [販売累計] 「販売類型」は「販売累計」の誤りでしょうか?

satoron666
質問者

お礼

回答ありがとうございました! 二人とも同様の内容でしたので、ベストアンサーは早かった方にさせて頂きます。 プログラムの書き方も色々あるのだと考えさせられました! 本当にありがとうございました! これからも勉強続けます!

satoron666
質問者

補足

>販売台数 [販売類型] 統計 商品金額 全データ 更新履歴 >↓ >更新履歴 統計 全データ 商品金額 販売台数 [販売累計] 「販売類型」は「販売累計」の誤りでしょうか? ⇒おっしゃるとおりです。

関連するQ&A

  • Excel 指定順にシートの並び替え VBA

    http://okwave.jp/qa/q8383406.html 上記の続きになります。 Sub macro() Dim A As Variant, I As Integer A = Array("更新履歴", "統計", "全データ", "商品金額", "販売台数", "販売累計") For I = 0 To UBound(A) Worksheets(A(I)).Move after:=Worksheets(Worksheets.Count) Next I End Sub このようにシートを並び替えているのですが、 この中で”統計”シートが無かった場合、 更新履歴 全データ 商品金額 販売台数 販売累計 と並び替える方法はありますか? 配列に入っているシート名があったら、並び替える。 (無かったらそこは飛ばす) そういう方法はないのでしょうか? 回答よろしくお願い致します!

  • Excel 指定順にシートの並び替え VBA

    http://okwave.jp/qa/q8383406.html 以前も質問させて頂きました。 任意の順番にシートを並び替えるプログラムです。 Sub Sheet_sort_Select() Dim A As Variant, I As Integer A = Array("更新履歴", "統計", "全データ", "商品金額", "販売台数", "販売累計") For I = 0 To UBound(A) Worksheets(A(I)).Move after:=Worksheets(Worksheets.Count) Next I End Sub 上記方法で並び替えを行っています。 色んなシートから並び替えを実行するのですが、 最後に選択していたシートに戻るということは可能でしょうか? このsortをした後に、またselectなりすれば シート選択できますが、他に方法はあるのでしょうか? Excel2003を使用しています。

  • Excelでの並び替えについて。

    Excelでの並び替えで困っています。 現在、行に日付、列に商品名を入力し、その間に販売個数を入力し管理しています。 入力はしやすいのですが、データとして扱う場合に検索等がしにくいので 日付、商品名、個数を1行に並び替えしたいと思っています。 個数が多いため、手動で全て行うのは不可能に近いです。 関数で行う事ができれば良いのですが、何か方法がありますでしょいうか。 できれば、個数が空白のセルは無視して、上に詰めて並び替えができれば理想です。

  • エクセルの二枚のシートに

    一枚目のシートに毎日の売上を入力し、その累計欄を設けてあります。 この累計金額を二枚目のシートのセルへ自動的にコピーする方法は?

  • Excel シートの保護 VBA

    「データ」、「A」という名称の2つのシートを ブック起動時にパスワードつきで保護したいと考えています。 また、マクロ(VBAのフォーム?)のみで更新できるようにしたいとも考えています。 Dim sheet1 As Worksheet Set sheet1 = Worksheets("データ") sheet1.Protect Password:="pass", _ AllowFormattingCells:=True 上記のやり方があると見たので、 ThisWorkBookに貼り付けて保存し、再起動してみたのですが 普通に、「データ」のシートに書き込めてしまいます。 何もエラーも出ないため、どう考えればよいのかも分かりません。 回答よろしくお願い致します。

  • エクセル 並び替えについて

    エクセルでの並び替えについてどなたか教えてください! エクセル2003を使用しています。例えば 分類名 | 単価 | 数量 | 金額  |・・・  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ A    |100  | 10  |1000 |・・・ A    |200  | 20  |4000 |・・・ A    |300  | 10  |3000 |・・・  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 小計                 8000  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ B    | 50  | 10  | 500 |・・・ B    |100  | 50  |5000 |・・・ B    |300  | 10  |3000 |・・・  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 小計                 8500          :          :          : 上記のように、分類名ごとに作られている表があった時に、 それぞれの分類ごとの小計が大きい分類から順に並び替えて、 さらにその分類中で、金額の大きい順に並び替えを することはできるのでしょうか。 データ量が少ない時にはピポットテーブルを使用して できたのですが、分類名も何百個とあり、全データに すると大変なデータ量になります。 ACCESSを使用してでもいいので、どなたかいい方法があれば、 教えてください! よろしくお願いします!

  • 未来のデータを含むシートを現在うまく表示する方法は?

    1.週間の販売データを記録するシート…週間販売データmm.dd.xls 2.月間の販売データを記録するシート…月間販売データ.xls シート2のイメージ 1.7 1.14 1.21 1.28 1/7-28累計 商品A 商品B 商品C 週間販売データのシートは、 週間販売データ1.7.xls → 週間販売データ1.14.xls →~1.21.xls と いうように、法則的に変化していきます。 要は、毎週の集計データを月間データ表に自動的に落としていく作業を したいので、式を埋めた月間データ表を先回りで作っておいて、 週間データが確定したときに瞬時に反映させることができればと 考えて、シート2に式を埋めたものを作ってみたのですが… まだ存在しないデータシートにリンクするように式を埋め込むと、 いちいちデータ更新の確認ダイアログが出てきてその都度延々と キャンセルを繰り返すことになり面倒なうえ、予定欄には「#REF!」と 表示されてしまいます。 まだ無いデータは欄の内容が「#REF!」なら文字を白で表示とかすれば 参照や印刷の障害にならずに済みますが、問題は累計の欄でして、 ここは1週でもデータがあれば月の途中でも累計を表示させたいのですが、 上記の方法で式を埋めた表では全週埋まらない限り「#REF!」が 表示されてしまうことになり、思い通りになりません。 そこで回避のための知恵を得たいのですが… 月途中で累計を表示させるうまい方法は無いものでしょうか? なお、シート1はシート2への転記完了とともに不要となり、 次週のシート1として流用します。シート2には値のみ入ればOKなのですが、 これはいちいち一度コピーして同じ場所に値のみ貼り付けというように しないとダメなのでしょうか?

  • カラムを好きな順で並び替え(取り出す)には?

    dataテーブル id name 1 あいう 2 かきく 3 さしす ... .. . というテーブルがあり、nameの値を任意の順番ですべて取り出したいのですが、どのようにSQLを書けばいいのか分かりません。 idは自動連番です。 idの順に取り出すにも並び替えが必要ですし、SQL文以外にも何か良い方法が有りましたらご教授いただけると幸いです。 なお、このテーブルは頻繁では有りませんが順次データが増えていきます。 そのたびに取り出す順番を検討するので、更新時にあまり手間のかからない方法が望ましいです。 データベースのバージョンは5.1です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Excelの並び替えの修正は可能でしょうか?

    Excelのデータ並び替えで、失敗をしてしまい、とても困っています。 顧客データをセルごとに項目を決めて、入力していったのですが、1つのセル(たとえばA列のみ)を並び替えを行い、他のセルの項目と合致しないデータにしてしまいました。 例: A列勤務先B(顧客氏名)C(住所)D(電話番号)E(E-mail) ーというカテゴリ分けをし、データを入力します。 A列の勤務先というデータのみを50音別に並び替えをしてしまいました。 他のBCDE列はAとつながる同列のデータのはずが、Aのデータと分断されてしまったという状況です。 Aの列とBCDE列とのデータを合致させる方法はないのでしょうか? 保存データは並び替えを行ってしまった後のもので、(随時、更新保存しています)以前のデータに戻すことができません。 データ全体を並び替えしなければいけないところを、1つの列だけ並び替えをしてしまった場合の修正方法がもしあれば、お教えください。とても困っています。 (おそらく、無理だろうなぁ・・・と諦めモードですが) 並び替えを失敗しないコツ???などもあればお教えください。 どうぞよろしくお願いいたします。

  • [VBA]エクセルシートから読み取り、全入力する

    いつも大変お世話になっております。 図のような2つのエクセルブック(統計.xlsx)(マクロ.xlsx)があります。 統計ブックのデータをマクロブックに自動的に入力できるVBAがわかりません。 [条件] http://infovivra.s100.xrea.com/1.jpg (統計.xlsx) http://infovivra.s100.xrea.com/toukei.xlsx http://infovivra.s100.xrea.com/2.jpg (マクロ.xlsx) http://infovivra.s100.xrea.com/makuro.xlsx  ・マクロ.xlsxには、4/15~4/21までの日付が記入されている ・マクロ.xlsxには10のシートがあり、同じ内容である ・県庁所在地が入っているセルはM3です(わかりにくいため) ・固有文字は、固有文字と固定で入力する [作成マクロ] (1)統計.xlsxのシート名で検索する。 (2)マクロ.xlsxのシート内で、統計.xlsxの日付で検索する。 (3)それぞれ連番を振り、日付で検索した所定の位置にデータを全て入力する。 (4)大項目ごとに行が移るが、同じ大項目で日付が異なる場合は同じ行に記入する。 (日付が重なった場合は、次の行に記入) (5)K2セルの日付は(2012/4/16)といった形式で記入され、可変する、統計データも同じ。 といった内容になっております。 [追記] [VBA] 年度を指定し、以降の日付を表示する というご質問もさせていただいておりますので、 もしお時間がございましたら、宜しくお願いいたします。 何卒宜しくお願いします。 gitmyk

専門家に質問してみよう