- ベストアンサー
行の並び替え(マクロ化)
現在4行目に参照された数字が記入されております。 C2~AP50を範囲指定し データの並び替えで オプション⇒列単位に変更をクリック 最優先されるキー 行4 値 降順 とクリックして 最後の確認を数値とテキスト形式の数を分けて並び替えを行う で決定 とういう作業を毎日しております。 1回は短時間ですが、毎日なのでちょっと手間に感じております。 マクロに詳しい方、上記作業をマクロ化して頂けませんでしょうか? 申し訳ありませんが宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 上記作業をマクロ化して頂けませんでしょうか? えっ。 丸投げですか。 ここは、疑問に思ったことを調べに調べつくして、それでもわからなかった人が 質問しにくるサイトであって、無料プログラミング屋さんではないですよ。 少しはマクロの組み方とか調べられました? マクロの自動記録とか試されました? 毎回毎回同じシート、同じ範囲に対して同じ操作をされるのであれば、 「マクロの記録」をお勧めします。 Excelのバージョンがいくつなのか明記されていないので 明確には言えませんが、メニューの中に「マクロの記録」というメニューが あるはずです。 以下の手順でマクロの自動記録を行えば、次からはそのマクロを起動するだけで 並べ替えが行われます。 1.「マクロの記録」を選択し、好きなマクロ名をつける。 このときショートカットキーを設定してもいいかもしれません。 マクロの保存先はデフォルトの「作業中のブック」でいいと思います。 2.範囲選択→並べ替えを実施する。 3.「記録終了」(「マクロの記録」メニューと同じ場所にあります)を選択する。 あと、マクロの実行方法は以下の通りです。 1.メニューの中から「マクロ」を選択する。 2.表示された画面の中で記録時につけたマクロ名を選択し、実行する。 以上、お試しください。
その他の回答 (1)
- matsu_jun
- ベストアンサー率55% (146/265)
hirotee さん、こんばんわ hiroteeさんの、回答に対する真摯な姿勢、ほとほと感心いたしました。 というと、上からの物言いみたくなってしまいますが、本当に尊敬いたします。 手元に実機が無いので、正しく検証はできませんが、恐らく以下の操作で大丈夫なはずです。 Sub Macro6() 中の一部を書き換えてください。 (書換え元) ActiveWorkbook.Worksheets("2") これが、都合3箇所ほど登場しておりますが、これを ActiveSheet と書き換えて、試してみてください。 だめだったら、 ActiveWorkbook.ActiveSheet というのも、試してみてください。 (補足) ActiveWorkbook.Worksheets("2") を日本語に訳すと、「現在開いているブックの、シート2」となり、 常にシート2を参照してしまいます。 それに対し、ActiveSheet と記述すれば、「現在編集可能なシート(すなわち画面に表示されているシート)」となるので、該当日付のシートを画面に表示してマクロを実行すれば、常にそのシートに対して処理が実行されるというわけです。 あと、お礼欄には Range("C2:AP42") となっていますが、問題文中では、C2からAP50となっています。 必要であれば、ここも書き換えなければいけないかもしれません。 書換えは、かならず「半角の英数字」で書き換えてくださいね。 マクロに慣れていけば、より効率的な方法を発見できると思いますが、hiroteeさんであれば、いつかそこへ到達するものと思います。 またご質問などございましたら、気軽にお声掛けしてください。補足欄や回答欄で要求をいただければ、できるだけ詳しくフォローいたしますし、上の「効率的な方法」もご紹介できると思います。
お礼
ご回答ありがとうございます。 真摯なとお褒めのお言葉を頂き嬉しくも恐縮しております。 そもそも設問の仕方、書き方が稚拙だったため、閲覧者に不快な書き込みをした私のせいですので そんな設問にも、ご回答頂き感謝しております。 お陰様でマクロが完成し、簡単に並び替えが出来るようになりました。ありがとうございます。 マクロは実際にクリックしている作業を文字で書いていくという認識はあるのですが、 その作業自身をどうプログラミングするかググてもなかなか辿りつけず困っておりました。 この度はmatsu_jun様のお陰でマクロが完成したことは間違いないのですが、 マクロの大元の式の確認の仕方「マクロの記録」をご指導頂いたNo1様の回答をBEST回答とさせていただこうと考えております。 最終形態までのご助言を頂いておりますのに申し訳ありませんがご理解頂ければ幸いです。 また、暖かいメーッセージとても励みになります。重ね重ね感謝いたします。
お礼
ご回答ありがとうございます。 調べては見たのですが、組み方や指示の内容の書き方など分からず、 丸投げな質問となっております。 ご意見の通り、少し安易な部分があったと思われます。 エクセル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"と変形させるのが分かりませんが少し、先が開けた感じです。 もう少しググって調べてみます。 ご叱責、対処案共にありがとうございました。