• 締切済み

エクセルシートの並び替え

VBAでシートの並び替えについて。 下記例の様に、セルA1:A50に書き込まれた順に、シートの並び替えを、上から順番にシートの最後尾に移動させるには、どのようにすれば良いですか?よろしくお願いします。 例 ○テーブル名:List ーーーA 1|にんじん 2|ピーマン 3|大根 4|・・・ 5|・・・ ○現在の並び順 List/ピーマン/・・/にんじん/・・・/・・/・/・・/大根 ○希望する並び順 List/にんじん/ピーマン/大根/・・・/・・・/・・・ 参考にしたURLは下記のとおりです。 http://www.relief.jp/itnote/archives/001300.php http://akubizzz.hp.infoseek.co.jp/sub169.html

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問の表現ずばり書くべきと思う。 「既にシートのA列に、希望する順序のシート名のリストがあり、その順に、シートを並べたい」 ということらしい。 ===== 例データ 香港 大阪 名古屋 東京 福岡 広島 シート「香港」の、A1:A6に希望する並び順が 東京 名古屋 大阪 広島 福岡 香港 とあるとする。 ーー Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d shn = Worksheets("香港").Cells(i, "A") ' MsgBox shn If i = 1 Then Application.Worksheets(shn).Move Worksheets(1) Else Application.Worksheets(shn).Move , Worksheets(i - 1) End If Next i End Sub Moveのあとのカンマ1文字が左右しているので注意。 上記で並び順のあるシート名「香港」は、自分の場合に変えること。 少数例しかテストしてないので、よろしく。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでドロップダウンリストを連動させたものを作るには?

    VBAでドロップダウンリストを連動させたものを作ることが出来ますでしょうか? 今まで入力規則の設定をつかって見ていましたがどうやら実現不可能と思われることが分かってきました。 VBAでの連動したリストの代替案を考えていますが・・・ いい方法は無いでしょうか? このページのようなことがやりたいと思っています。 http://www.relief.jp/itnote/archives/000822.php

  • エクセル 品目に対してシートの検索と書き出し

    エクセル2010です。 ある品目リストがあり、そこに別のいくつかのリスト(同じブック内のシート)から、品目が同じものがどのシートにあるか、というのを検索してそれぞれのセルに記録したいのです。 何の品目がどのシートに載っているかというリストの作成です。 例えば、メインの品目リストが  ごぼう  にんじん  はくさい  トマト  ほうれんそう  いちご というリストがあったとして、別のシートに、 (シートA)   (シートB)   (シートC) かぼちゃ    だいこん    ブロッコリー はくさい    きゅうり     カリフラワー にんじん    はくさい     すいか たまねぎ    なす      にんじん りんご      すいか     たまねぎ みかん     ピーマン    いちご となっているとします。 これに検索をかけ、メインの品目リストに別リストと重複している品目について、  ごぼう  にんじん シートA,シートC  はくさい シートA,シートB  トマト  ほうれんそう  いちご シートC という結果を書き出したいのです。 これを、メイン品目リストの全品目について、一気に検索と書き出しができないものでしょうか。 エクセルでこんなことができるのかどうかわかりませんが、なにせ品目は数百種類あるので、ひとつひとつ手動で検索して調べてるといつになるかわかりません。 マクロを使うやり方でも、一気にできなくてもできるだけ省力化できる方法などあれば、ぜひともご教授ください。 よろしくお願いします。

  • シート保護してても並び替えをしたい。

    添付画像を載せましたが、残高には関数があり、その列だけはシート保護をかけてあります。 保護のかけ方は、A~Dの1行目も含め最下行までです。 あとのA~D列は入力できるのですが、「このシートのすべてのユーザーに許可する操作」 で、「並び替え」にチェックしてあるのですが、A1の“年月日”にセルを置いて<昇順で並び替え>をやるのですが、保護がかかっているため並び替えできません。 VBAではなく一般操作の範囲でなんとか並び替えができるようにならないでしょうか。

  • シート見出しの色を自動で変えるには

    エクセル2003を使用してます。 B2のセルに下記のような特定の文字が入力された場合、自動的にシート見出しの色を変えるようにしたいです。 (例) "(1)" が入力された場合、赤 "(2)" が入力された場合、青 "(3)" が入力された場合、黄 最大で(10)までです。 といった具合です。 VBAを使うことになるのでしょうか? VBAだとしたら、色のコードみたいなものは、下記ページの1、53、52、といった数字がそれに当たるのでしょうか? http://www.relief.jp/itnote/xls_colorindex.php 恐れ入りますが、宜しくお願い致します。

  • ExcelのVBAに詳しい人に質問です

    表などでアクティブセルの行や列を目立たせるために、下記URLを参考に条件付き書式とVBAを合わせた技を使用しているのですが、アクティブセルを移動するたびにExcel表が点滅?するので、これをどうにか点滅しないようにしたいのですが出来ますでしょうか。 Application.ScreenUpdating = True を使っているのが原因だと思うのですが、無理でしょうか。 ・アクティブセルのある行・列を目立たせる http://www.relief.jp/itnote/archives/001406.php

  • VBA ユーザ定義関数の使い方です

    VBA ユーザ定義関数の使い方です Sub test() cells(1,1)=UpperSutegana(cells(1,1)) End sub http://www.relief.jp/itnote/archives/002223.phpのソースをコピー としましたがうまくいきません。なぜでしょうか?

  • エクセルでシートをまたいでコピー

     エクセルでたとえば A商店 だいこん 1 200 A商店 にんじん 2 180 B会社 リンゴ  1 200 C販売 からいも 1 100 C販売 お茶   1 200  とかある時に1枚目の「A商店」という名のシートに、そのシートに だいこん 1 200 にんじん 2 180 B会社のシートに りんご 1 200 C販売のシートに からいも 1 100 お茶   1 200 とかに自動的に振り分ける方法はないでしょうか。シートの名前まで自動的につける必要はありません。すでにシートは作ってあります。データベースで作ったデータが1万行以上あり、前任者がエクセルで作った表に変換しなければならないのです。シートは約30枚あり、テーブル内のレコードの項目順の並べ替えはすんでいますが、順序はエクセルのシートの順番とは違います。わかりにくいとは思いますが補足要求をしていただければ再度ご説明します。よろしくお願いします。

  • VBAをExcel2010/2013で利用

    下記URLのサンプルファイルに含まれるVBAで作成されたユーザー定義関数について、 Excel2003(Windows7)の環境で利用することが出来ました。 http://www.relief.jp/itnote/archives/003799.php しかしながら、Excel2010およびExcel2013(ともにWindows7)で開くと、結果が #VALUE! と変わってしまい、正しく表示されませんでした。 VBAの参照設定でも同じものにチェックを入れている状態ですが、うまくいきません。 (ただし、Microsoft Excel XX.X Object LibraryやMicrosoft Office XX.X Object Library などバージョンの差異はあり) Excel2010またはExcel2013において、このユーザー定義関数を 正しく利用できる方法が分かりましたらご教示いただけますと助かります。

  • エクセルのセルに以下のデータを入力するとします。

    エクセルのセルに以下のデータを入力するとします。 シート1 A2 なす A3 大根 A4 キャベツ A5 にんじん このデータを入力で自動でシート2に以下のように表示させるにはどうすればいいでしょうか? A1      | B1 なす| C1 大根 | D1 キャベツ | E1 にんじん A2 なす A3 大根    A4 キャベツ A5 にんじん

  • 重複したデータを1つだけ表示

    以下のページにて文字を続けて入力できるようになりました。 http://www.relief.jp/itnote/archives/001342.php​ しかし、以下のような場合、同じ値が何度も出てきます。 例) A1 200 A2 150 A3 180 A4 200 A5に”=ConcatenateRangeText(A1:A4)”と入力した場合、 A5に表示されるのは”200150180200”となります。 これを、以下のように、重複しているものは1度だけ、また数字の少ない順に表示することはやはり不可能でしょうか? 希望の表記⇒”150,180,200”