dポイントプレゼントキャンペーン実施中!

こんにちは。
今、ある表の並べ替えの問題で悩んでいます。
(並べ替え、オートフィルタ、条件付書式もやってみましたが、
自分ではできませんでした;;)
その表とは、在庫品のデータの入力された表なんですが、
A     B   C    D   E
01-0023  M1  完了   MBC01 2000/01/02
01-0043  M2  未    MBC02 2003/03/02
01-0123  M1  完了   MBC01 2006/01/02
となっているとします。
並べ替えでも、ある時は”A”項目を昇順で、
またある時は”E”項目を降順で、見てみたいとします。
この場合によっては違う項目をキーに並び替えたい場合、
ボタン等をつけるなどして、アクセスのフォームのように
押せば、その”A”なら”A”をキーに昇順で並び替えられ、
”E”なら”E”をキーに降順で並び替えられる。。。という
夢のような方法があるのでしょうか?
オートフィルタだと、抽出になってしまいますし。。。
2つのシートを作成して、その都度実行する方法ではない、
その時々で違う並び替え方法ってありますか?
できれば、元の表は並び替えず、シート参照をしてみたいと思っているのですが、無茶ですか?
どなたか教えてください、お願いします。。。。。

A 回答 (3件)

実用で使ったことはありませんが、今考えてみました。


マクロを使えばできそうです。
とりあえず、降順昇順は置いといて、指定したセルの昇順に並べることを考えました。
コマンドボタンをSheet1に1つ貼り付けます。そのクリックイベントに
Private Sub CommandButton1_Click()
Range("A1:C10").Sort Key1:=Range(Range("F1")), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
と入れます。
(A)F1セルに、A2やB2やC2のように、列を表す文字列を入れて、
(B)ソートするセル範囲を範囲指定し、
(C)コマンドボタンをクリックすると、その列で昇順に並べ替えられます。
上記は、並べ替えのマクロの記録をとり、極く一部改造したものですから作りやすいでしょう。
>元の表は並び替えず、シート参照をしてみたいと思っているのですが・・
これはVBAで自動でシートコピーをとって、上記のようなコードをいれれば可能なように「見え」ます。
しかし文字通りではできません。
色々できないかという、疑問は良いですが、VBAでもできるようにならないと、人に答えをもらうことはできても、自分ではできないわけで、できるといえるのかどうか。

この回答への補足

マクロとか使うとは思ってなかったんですが、条件付書式のような便利なツールがあれば。。。と思って質問しました。
VBAを使用した事は昔にあったぐらいだったので。。
教えていただいたように、そのままコピーしましたがエラーで使用できませんでした。。

Private Sub CommandButton1_Click()
Dim Msg
' エラーが発生したら、エラー メッセージを作成します。
On Error Resume Next ' エラーのトラップを留保します。
Err.Clear
Err.Raise 6 ' "オーバーフロー" エラーを発生させます。
' エラーの発生をチェックした後、メッセージを表示します。
If Err.Number <> 0 Then
Msg = "エラー番号 " & Str(Err.Number) & Err.Source & _" でエラーが発生しました。"
& Chr(13) & Err.Description
MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
End If
Range("A2:W798").Sort Key1:=Range(Range("A2")), Order1:=xlAscending, Header:=xlGuess, _
ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, Sortmethod _
:=xlPinYin, dataoption1:=xlSortNormal

End Sub

というのが現状です。。
そのまま(あ、勿論セルの範囲とか、キーとかは直しました)、コピーがいけなかったのでしょうか?

補足日時:2006/01/27 09:52
    • good
    • 0
この回答へのお礼

すみません、時間がなくなってしまいました。
何とか、上記の答えを自分なりにもう一度やってみます。

ありがとうございました。

お礼日時:2006/01/27 17:29

自動?



もしかして私が質問の意図を読み違えてるのかな?
バーにあるAZ↓・ZA↓での並び替えではないのかな?

例えば、B列を昇順で並び替えるときにB列のどこかのセルを選んでAZ↓で並び替えるという意味で受け取ってましたが、違いますか?

違う場合はごめんなさいです。

あと
>元の表は並び替えず
の意味も気になってはいたんですが・・・。

この回答への補足

すみません、ややこしすぎて。。。
普通の並び替えではなくて、ある表を作成済みですがデータは日々更新のものがあるとします。。
そのデータは色々な場合に使用するため、ある特定のキーで並び替える必要があるのですが、それが2通りあるのです。
それを、毎回、毎回選択して並び替えというのはデータが多くなってきたので、
アクセスのフォームのような感じの、ボタンを押せば(1)番目のキーで並び替えが実行されて、違うボタンを押せば(2)番目のキーで並び替えが実行される。。。という、手間を短くしたいなぁと思ってることです。

ただ、エクセルにフォームなんてないし、自動(というか、半分手動?)に出来たら。。。と思ったのです。

すみません、質問の仕方がややこしいですね。。

補足日時:2006/01/27 08:29
    • good
    • 0

普通は出来ますよ。



ただ表の中に不都合があると出来なくなります。
空白が多かったり結合セルあったりする場合等。
見出しが原因で出来なくなる場合もあるようです。

見出しが原因の場合は、見出しとデータの間に1行データの無い行を入れると並び替えが出来るようになるかもしれません。
データ内に結合セルがある場合は結合の解除で出来るようになると思います。

私が思い当たる原因はその辺ですね。

この回答への補足

回答ありがとうございます。
自動並び替えは出来ますか?
出来ると聞いてホッとしました。

出来れば、方法も教えていただけないでしょうか?
今のところ、どうやったらいいのか、普通の並べ替え以外では
思いつきません。
回答お待ちしています。

補足日時:2006/01/26 17:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!