- 締切済み
エクセル2003で日付等をソートしたい
エクセル2003で日付等をソートしたいのですが、簡単に設定できますか?? 表のA1に日付というセルを作りました。その下から日付がずらっと並んでいるのですが、その日付はランダムで、上から若い順に並び替えたいです。 毎回、手動でするのではなくて、A1セルにボタンをつけて、カチッとクリックするだけで並び替えをしたいです。 たまに見かけるのですが、セルの右端に灰色の矢印の付いたボタンみたいなのが、そうだと思います。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 返事が遅くなってすみません。 >×印が出るやつです。なぜでしょうか?? それを、「実行時エラー」といいます。 たぶん、コードを貼り付けるシートと、ボタンの場所が食い違っているからです。 例えば、 Visual Basic ---[Sheet1(コード)] と、枠の一番上の青いところに表示されていて、 左上の窓を見ると Sheet1(Sheet1) とかが、黒っぽくセレクトされているはずです。 そこに、コードを貼り付けます。 後は、その場所で、F5 を押して、フォームボタンを作るマクロ を実行してみてください。 それから、今、気が付きましたが、安全のために、 ActiveSheet.Range("A1").Sort は、 Range("A1").Sort と換えてください。 Private Sub SortPr() '並べ替えマクロ Const myOrder As Integer = xlAscending ActiveSheet.Range("A1").Sort _ Key1:=Range("A2"), _ Order1:=myOrder, _ Header:=xlYes, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlTopToBottom End Sub ↓ Private Sub SortPr() '並べ替えマクロ Const myOrder As Integer = xlAscending Range("A1").Sort _ Key1:=Range("A2"), _ Order1:=myOrder, _ Header:=xlYes, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlTopToBottom End Sub なお、お互いのお時間が経ちましたので、「お礼側」書いていただければ、こちらは、見落とししないで済みます。よろしくお願いします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 #3さんのご意見には申し訳ないのですが、マクロを作ってしまいました。 以下は、ボタン(フォーム)そのものを作ってしまうマクロです。 一応、今は、ボタン(フォーム)は昇順に並べるだけです。 マクロの付け方: データのある場所のシートタブを、右クリックすると、コードの表示というものがありますから、それをクリックして画面を出していただきます。以下を貼り付けてしまったら、 後は、Altキーを押しながら、F11で、元の画面に戻ります。 (注意:今回の場合は、かならず、データの並べ替えをするシートでなければなりません。また、フォームボタンから本格的なコントロールツールボタンに移行する場合は、ボタンのマクロの中身だけをそっくり抜き出せば使えます。) 最初に、ボタンの位置決めをしておきます。 Altキーを押しながら、F8 を押して、『フォームボタンを作るマクロ』の名前を小窓の中から探して、クリックしてください。 うまく成功すれば、ボタンが、位置決めしたところに出てくるはずです。 後は、そのままお使いください。『フォームボタンを作るマクロ』は、もし使うことがないなって思ったら、削除してしまったほうがよいです。 ボタンの位置が後で気に入らなかったら、ボタンを右クリックすると、選択状態になりますから、マウスカーソルの形状が変わって十字になれば移動できます。また、白抜き矢印状態の時は、削除も可能です。 Sub フォームボタンを作るマクロ() Dim dummy As Variant Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double Dim CodeModuleName As String CodeModuleName = Application.VBE.ActiveCodePane.CodeModule.Name On Error Resume Next Set dummy = ActiveSheet.Buttons("SortButton") If Err.Number = 0 Then MsgBox "既にボタンは作られました。再び作る時は、前のものを削除してください。" Exit Sub End If On Error GoTo 0 If MsgBox("ボタンは、この場所でよろしいですか?", vbOKCancel) = vbCancel Then Exit Sub End If On Error GoTo ErrMsg With ActiveCell x1 = .Left y1 = .Top x2 = .Offset(, 1).Left y2 = .Offset(1).Top End With With ActiveSheet.Buttons.Add(x1, y1, x2 - x1, (y2 - y1) * 2) .Name = "SortButton" .OnAction = CodeModuleName & ".SortPr" .Caption = "並べ替え" .Visible = True End With Exit Sub ErrMsg: MsgBox "設定に失敗しました。", 16 ActiveSheet.Buttons(1).Delete End Sub Private Sub SortPr() '並べ替えマクロ Const myOrder As Integer = xlAscending ActiveSheet.Range("A1").Sort _ Key1:=Range("A2"), _ Order1:=myOrder, _ Header:=xlYes, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlTopToBottom End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
(1)まず本質問と直接関係ないですが、日付と見えるものも、文字列と正式な日付と2種あります。 エクセルの標準の日付を入力したデータだと、日付のセルの「値」は日付シリアル値という整数値なんです。ですから数値が入っている列のソートと 同じことなのです (2)>ボタンをつけて、カチッとクリックするだけで並び替えをしたいです オートフィルタの画面からの連想だと思いますが、#1でご指摘の通り、列データの中からの抽出の選択のためのものです。ドロップダウンリストの一種で選択のためのコントロール(部品)です。 ソートは並べ替えのキー(それを元に並べ替える)の列を指定するので、 多数列先頭のドロップダウンでは用を成しません。 むしろ1つのボタンを貼り付け、クリックするとソートする仕掛けを VBAで作ります。 (3)昇順が決まっていて、キー列も決まっているなら、VBAやマクロの記録でやれますが、それを勉強するまでは、エクセルの標準の並べ替えの操作を 面倒でも行ってください。 (4)ソート列の設定という点で、毎回データを入れるたびに自動で並べ替える、手操作による設定はありません。 楽に楽にを追求するのもいいですが、全体のニーズのバランスも考えて、今の姿になっている場合が多いので、そんなに沢山の課題で裏技的なものが存在するわけではありません。VBAを学べば、すこし自由にできる場合があります。
お礼
私にはまだまだ早いってことですよね?? imogasiサンには、頭が下がります…いつもありがとうございます!!
- konyanyachiwa
- ベストアンサー率63% (12/19)
オートフィルターの事でしょうか? その日付というセル(A1)を選択して、[データ]-[フィルタ]-[オートフィルタ]を上のメニューから選んでください。 そうすると、その矢印のボタンがでてくるので、 それをクリックして、ちょっと上にある、 昇順で並べ替え・降順で並べ替え などを使って並べ替えしてください^^ 頑張ってください(,,゜Д゜)
お礼
できました!!でもNo1の方が、使い方が違うって言ってまして…ありがとうございました。
- mati53
- ベストアンサー率24% (9/37)
エク使用していますが、あまり詳しいほうではありません。 並び替えですが、カチッとする方法ではなく、普通に並べ替える箇所(横のデーターなどもあればすべて)を選んでデーターの並べ替えでできると思います。 セルの設定は日付にしておくとよいと思います。 カチッとボタンは抽出する場合に使用します。 例えば何かの合格OR不合格の人だけを表示するなど。 その場合はデーターのフィルターを使います。
お礼
カチッとボタンは使い方が違うんですね。うかつでした…ありがとうございました!
補足
言われたとおり、実行すると、400と出てブーっとなって、無理でした。ダイアログボックスに、×印が出るやつです。なぜでしょうか??