- ベストアンサー
指定した文字列を検索し、その行を並び替えしたいです。
指定した文字列を検索し、その行を並び替えしたいです。 (例) 魚|さば|5|2010/04/30 肉|うし|3|2010/03/21 魚|いか|7|2010/02/24 魚|たこ|9|2010/02/05 肉|ぶた|2|2010/03/14 上記の表で1列目の行を、3列目の「数量」または4列目の「日付」で並び替えがしたいのです。 「魚日付」「魚数量」「肉日付」「肉数量」のボタンを作成しマクロで処理したいと思います。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Sub 魚数昇順() Application.ScreenUpdating = False Call setup Call main("魚", "数", "昇順") Call cleanup Application.ScreenUpdating = True End Sub Sub 魚数降順() Application.ScreenUpdating = False Call setup Call main("魚", "数", "降順") Call cleanup Application.ScreenUpdating = True End Sub Sub 魚日昇順() Application.ScreenUpdating = False Call setup Call main("魚", "日", "昇順") Call cleanup Application.ScreenUpdating = True End Sub Sub 魚日降順() Application.ScreenUpdating = False Call setup Call main("魚", "日", "降順") Call cleanup Application.ScreenUpdating = True End Sub Sub 肉数昇順() Application.ScreenUpdating = False Call setup Call main("肉", "数", "昇順") Call cleanup Application.ScreenUpdating = True End Sub Sub 肉数降順() Application.ScreenUpdating = False Call setup Call main("肉", "数", "降順") Call cleanup Application.ScreenUpdating = True End Sub Sub 肉日昇順() Application.ScreenUpdating = False Call setup Call main("肉", "日", "昇順") Call cleanup Application.ScreenUpdating = True End Sub Sub 肉日降順() Application.ScreenUpdating = False Call setup Call main("肉", "日", "降順") Call cleanup Application.ScreenUpdating = True End Sub Sub setup() Dim r As Long Range("A:A").Insert r = Range("B65536").End(xlUp).Row With Range("A1:A" & r) .Formula = "=ROW()" .Value = .Value End With Range("A1:E" & r).Sort key1:=Range("B1"), header:=xlNo End Sub Sub main(a1, a2, a3) Dim h1 As Range Dim h2 As Range Set h2 = Range("B:B").Find(what:=a1, after:=Range("B1"), searchdirection:=xlPrevious) Set h1 = Range("B:B").Find(what:=a1, after:=h2, searchdirection:=xlNext) Range(h1, h2.Offset(0, 4)).Sort key1:=h1.Offset(0, IIf(a2 = "数", 2, 3)), order1:=IIf(a3 = "昇順", xlAscending, xlDescending), header:=xlNo End Sub Sub cleanup() Dim r As Long r = Range("B65536").End(xlUp).Row Range("A1:E" & r).Sort key1:=Range("A1"), order1:=xlAscending, header:=xlNo Range("A:A").Delete End Sub >1列目の行を、3列目の「数量」または4列目の「日付」で並び替えがしたいのです。 判ってる人には意味が判っても,そうでない人にはさっぱりです。 もう一言丁寧に,結果の例まで欲しかったですね。