• ベストアンサー

行の並び替え(マクロ化)

現在4行目に参照された数字が記入されております。 C2~AP50を範囲指定し データの並び替えで オプション⇒列単位に変更をクリック 最優先されるキー 行4  値  降順 とクリックして 最後の確認を数値とテキスト形式の数を分けて並び替えを行う で決定 とういう作業を毎日しております。 1回は短時間ですが、毎日なのでちょっと手間に感じております。 マクロに詳しい方、上記作業をマクロ化して頂けませんでしょうか? 申し訳ありませんが宜しくお願いします。

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

  • ベストアンサー
  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

> 上記作業をマクロ化して頂けませんでしょうか? えっ。 丸投げですか。 ここは、疑問に思ったことを調べに調べつくして、それでもわからなかった人が 質問しにくるサイトであって、無料プログラミング屋さんではないですよ。 少しはマクロの組み方とか調べられました? マクロの自動記録とか試されました? 毎回毎回同じシート、同じ範囲に対して同じ操作をされるのであれば、 「マクロの記録」をお勧めします。 Excelのバージョンがいくつなのか明記されていないので 明確には言えませんが、メニューの中に「マクロの記録」というメニューが あるはずです。 以下の手順でマクロの自動記録を行えば、次からはそのマクロを起動するだけで 並べ替えが行われます。 1.「マクロの記録」を選択し、好きなマクロ名をつける。  このときショートカットキーを設定してもいいかもしれません。  マクロの保存先はデフォルトの「作業中のブック」でいいと思います。 2.範囲選択→並べ替えを実施する。 3.「記録終了」(「マクロの記録」メニューと同じ場所にあります)を選択する。 あと、マクロの実行方法は以下の通りです。 1.メニューの中から「マクロ」を選択する。 2.表示された画面の中で記録時につけたマクロ名を選択し、実行する。 以上、お試しください。

hirotee
質問者

お礼

ご回答ありがとうございます。 調べては見たのですが、組み方や指示の内容の書き方など分からず、 丸投げな質問となっております。 ご意見の通り、少し安易な部分があったと思われます。 エクセルver2010です。 そこを踏まえた上での対策案を教えていただきありがとうございます。 お蔭様で下記のマクロ式になることが分かりました。 Sub Macro6() ' ' Macro6 Macro ' ' ActiveWorkbook.Worksheets("2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("2").Sort.SortFields.Add Key:=Range("C4:AP4"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("2").Sort .SetRange Range("C2:AP42") .Header = xlGuess .MatchCase = False .Orientation = xlLeftToRight .SortMethod = xlPinYin .Apply End With 毎日 違うシートに実行するので、worksheets("2")を今開いているシートに実行or選んだシート"1"~"31"と変形させるのが分かりませんが少し、先が開けた感じです。 もう少しググって調べてみます。 ご叱責、対処案共にありがとうございました。

その他の回答 (1)

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

hirotee さん、こんばんわ hiroteeさんの、回答に対する真摯な姿勢、ほとほと感心いたしました。 というと、上からの物言いみたくなってしまいますが、本当に尊敬いたします。 手元に実機が無いので、正しく検証はできませんが、恐らく以下の操作で大丈夫なはずです。 Sub Macro6() 中の一部を書き換えてください。 (書換え元) ActiveWorkbook.Worksheets("2") これが、都合3箇所ほど登場しておりますが、これを ActiveSheet と書き換えて、試してみてください。 だめだったら、 ActiveWorkbook.ActiveSheet というのも、試してみてください。 (補足) ActiveWorkbook.Worksheets("2") を日本語に訳すと、「現在開いているブックの、シート2」となり、 常にシート2を参照してしまいます。 それに対し、ActiveSheet と記述すれば、「現在編集可能なシート(すなわち画面に表示されているシート)」となるので、該当日付のシートを画面に表示してマクロを実行すれば、常にそのシートに対して処理が実行されるというわけです。 あと、お礼欄には Range("C2:AP42") となっていますが、問題文中では、C2からAP50となっています。 必要であれば、ここも書き換えなければいけないかもしれません。 書換えは、かならず「半角の英数字」で書き換えてくださいね。 マクロに慣れていけば、より効率的な方法を発見できると思いますが、hiroteeさんであれば、いつかそこへ到達するものと思います。 またご質問などございましたら、気軽にお声掛けしてください。補足欄や回答欄で要求をいただければ、できるだけ詳しくフォローいたしますし、上の「効率的な方法」もご紹介できると思います。

hirotee
質問者

お礼

ご回答ありがとうございます。 真摯なとお褒めのお言葉を頂き嬉しくも恐縮しております。 そもそも設問の仕方、書き方が稚拙だったため、閲覧者に不快な書き込みをした私のせいですので そんな設問にも、ご回答頂き感謝しております。 お陰様でマクロが完成し、簡単に並び替えが出来るようになりました。ありがとうございます。 マクロは実際にクリックしている作業を文字で書いていくという認識はあるのですが、 その作業自身をどうプログラミングするかググてもなかなか辿りつけず困っておりました。 この度はmatsu_jun様のお陰でマクロが完成したことは間違いないのですが、 マクロの大元の式の確認の仕方「マクロの記録」をご指導頂いたNo1様の回答をBEST回答とさせていただこうと考えております。 最終形態までのご助言を頂いておりますのに申し訳ありませんがご理解頂ければ幸いです。 また、暖かいメーッセージとても励みになります。重ね重ね感謝いたします。

関連するQ&A

  • エクセルの行列方向での並び替え

    エクセルのデータを下記のように並べ替えるのにはどうしたら宜しいのでしょうか?   1  2  3          1  2  3 A 1.23 2.85 1.11    A 2.85 1.23 1.11 B 12.34 15.72 15.57   B 15.72 15.57 12.34 C 16.07 16.99 15.93   C 16.99 16.07 15.93 ・   ・ ・       並び替え→      ・ ・   ・ E 16.94 14.87 13.87           E 16.94 14.87 13.87 上記のように行単位降順の並び替え方法を教えて下さい。 並び替えオプションで列単位として優先されるキー3行については並び替えができますが、データを一括に並び替えしたいのです。  

  • エクセルの並び替えについての質問です。

    エクセルの並び替えですが、例えば列の並び替えで2列(仮にA列・B列)に数値は入れてあり、A列を基準に昇順する場合2003ではその並べ替えをしたい範囲を指定して、「データ」→「並べ替え」→範囲の先頭行をデータにチェックを入れて、最優先されるキーを列Aにして、昇順にチェックを入を入れれば、A列基準で並び替えが完了しましたが、2007ではではその並べ替えをしたい範囲を指定して、「並べ替え」→最優先されるキーを選択すると列A・列Bの選択ではなく、A・B列の1行目の数値の選択となり、それで並び替えると1行目はそのままで、2行目からの並び替えになってしまいます。また1行目を数値のない空欄セルにしておいて1行目から上記作業をすれば、優先されるキーは列A・列Bの選択肢が出ますが、もしその表が1行目が空欄で無い場合はどうするのでしょう?また、2003では並び替えの作業を『繰り返し』で別の表も同じく並び替えの作業が出来ますが、2007では上記の1行目空欄セルにしておいてから並び替えをして『繰り返し』の作業は出来ません。 どの様にすれば、『繰り返し』の作業も出来るのでしょうか?

  • エクセル 降順の並び変えで変です。

    ビスタ/2007 添付表にて目標達成率順に並べ替えようとしています。 (1)H4~H8を選択 (2)並べ替えをクリック (3)「並び変えの前に」にて「選択範囲を拡張する」のラジオボタンをオン-並び替えをクリック (4)最優先キー「列H]-「値」-降順-OK 以上で降順になりましたが、なぜか、項目見出しの行が一段上にあがってしまいました。 なぜ、こんなことがおきるのでしょうか?教えて下さい。

  • エクセル・並び替えのマクロ

    エクセルで並び替えのマクロを作ったのですが ___A ______B ______C ______D ______E ______F _____________G 1 (株)カネカ【東証1部 : 4118.T】 2 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 3 07/07 1,030 1,069 ___941 __974 30,772,000 ___974 4 07/06 1,057 1,093 1,016 1,033 26,904,000 1,033 5 07/05 1,080 1,086 1,023 1,051 26,541,000 1,051 6 07/04 1,113 1,209 1,087 1,098 36,317,000 1,098 7 07/03 1,096 1,128 1,020 1,124 23,988,000 1,124 8 07/02 1,098 1,147 1,020 1,105 28,609,000 1,105 9 07/01 1,100 1,158 1,078 1,082 17,808,000 1,082 このような表で マクロ記録開始 セルA3をクリック データ→並び替え 優先されるキー:日付・昇順 データ範囲の先頭行:タイトル行 マクロ記録終了 で、できたマクロが Sub Macro1() Range("A3").Select Range("A1:G9").Sort Key1:=Range("A3"), Order1:=xlAscending,Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 1行目、2行目の(株)カネカ、日付、始値…、が8行目、9行目になってしまいます そこで、マクロの Range("A1:G9")を Range("A3:G9")に書き換えて Sub Macro2() Range("A3").Select Range("A3:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 日付が、07/07、07/01、07/02、07/03、07/04、07/05、07/06 の順番になってしまいます どうしたらよいのでしょう?

  • エクセルの並び替えで教えて下さい。

    1行目に見出しがあり、何度も並び替えをする(優先順位が3つ以上ある)場合、1行目の並び替えをしたいセルをクリックしてからツールバーの並び替えのボタンを押し並べ替えをしているのですが、1行目の見出しの行がデータの中の含まれてしまう事があるのですが、何故なのかわかりません。 回避する方法はあるのでしょうか?

  • 基準列が空欄セルも含めて並び替えを実施する方法

     添付ファイルの様な左列のIDを基準にそれに紐付く氏名、住所、商品名の列があります。 表が出力される時は並びがIDを基準に降順(番号の新しいものが上に)になっていますが、これを毎日昇順(番号が古い物を上に)する作業があります。 表を見て頂ければおわかりの通り、IDは1行しか表示されない為、通常のエクセルの並び替えメニューで実行するとIDが表示ある行とない行でバラバラになってしまう為、現状は行切り取り→下へ移動の方法で並び替えを実施していますが、この作業が手作業な為、非常に時間が掛かってしまいます。 マクロかVBAでID列を基準にそれにぶら下がっているID空欄行を全て並び替える(降順 → 昇順)方法がお分かりになればご指導願います。 ※サンプルは5明細ですが実際の明細は50前後の明細になります。

  • エクセル 並び替えの繰り返しについて

    こんにちは いつもお世話になっています。 エクセル2007でのデータの並び替えについて教えてください。  並び替えの優先事項では2つの列を指定しています。この並び替えをショートカットで繰り返せないでしょうか。現在は並び替えをしたい複数行を選択して並び替えの優先を設定する作業を繰り返しているのですが、選択範囲を変える以外は同じ作業なのです、つまり、優先事項の設定は同じ列です。二回目からの作業として、選択範囲を指定してからショートカットキーでソートしたいのです。 F4キーでは失敗しています。 わかりづらい記述になりましたがよろしくお願いします。

  • Excel2007 マクロで並び替えをしたい

    エクセルシートに、A列から順に 部-課-担当-氏名コード-氏名-年齢 というデータが入っています。 部・担当にはデータが入っていますが、課は空白の方も居ます。 このデータを、こちらが決めた規則によって並び替えるマクロを作りたいと思っています。 (1)まず、A部⇒B部⇒C部⇒D部の順で並べる (2)次に、E課⇒F課⇒G課⇒H課の順で並べる (3)さらに、I担当⇒J担当⇒K担当⇒L担当⇒M担当の順で並べる (4)最後に、特定の人物の氏名コード(数字)を指定して並び替える。O⇒P⇒Q⇒R(管理者を各担当の一番上に持ってきたい為) 要するに、(1)⇒(2)⇒(3)⇒(4)の優先度で、ユーザー設定リストによる並び替えを行いたいです。 初めは「マクロの記録」を利用しようと思ったのですが、 ・並び替えを行うシートの列の並びが毎回同じではない ・見出し行の名称も微妙に違う場合がある ・データの数(行数)が毎回違う よって、できれば毎回並び替えを行う列を、部分一致による検索で指定できればと思います。 (例:見出しは必ず1行目にあるものとし、部分一致検索で「部」が該当したセルの列を優先度(1)として並び替える。以降同じように課⇒担当⇒氏名コード順で検索を行い、並び替える) その際考えられる問題点として、「課」が空白になっている場合、並び替えが思い通りにならないという事です。(確か空白行は一番最後になりますよね。) よって、まずは「課」の列にある空白セルに何らかの文字・・例えば-等を入力する必要があると思います。 以上の事をマクロで行えるでしょうか? マクロ初心者なのですが、職場にマクロを使える方がいない為どこから手をつけていいか悩んでいます。 こういう方法使ったらいいんじゃない?とか大体でもいいので教えていただければ幸いですm(_ _)m

  • Excelマクロで全シートで数値の並び替え

    Excelは2007を使っています Sheet1~Sheet3のG列5~100行に入っている数値を降順で並び替えたいのですが、 これをマクロで実現する方法がありましたらご教示をお願い致します。 F列には業者名、G列には取引数を入力しており、 これが業者名とズレる事無くソート出来るようにしたいと考えております。 出来た!と思ったのですが、業者名がズレてしまい非常に困っております。 よろしくお願いします!

  • 【マクロ等】4行ごとに行を消したいのですが…

    いつもお世話になっております。 最近Excelで作業をすることが多いのですが相手の会社より頂いたデーターがテンプレートの違い上読み込むと4行ごとにデータが表示されます。 (参考図) ■A B C D E F (1)100 (2) (3) (4) (5)200 (6) (7) (8) (9) (10)1000 … と言った感じで4行の空欄が入ってしまいます。 いつもこの4行を行の削除でマウスを右クリックして削除しているのですがデーター行が2000とかを超えると血の気が引きます。。。 どうにか一括で間4行を削除することはできないでしょうか? 必ずデータはA1からはじまり4行ごとに間が空きA5,A10…と数値が入る形です。 よろしくお願いします。

専門家に質問してみよう