Excel 2016を使用しています。
現在、利用予定表を作成しております。
下記のような表(画像参照)があり地域毎に並び替えを一気にしたいのですが可能でしょうか。
カレンダー形式にしており
A列,D列,G列…(3行毎) に通し番号
B列,E列,H列…(3行毎) に名前
C列,F列,I列…(3行毎) に地域
これが31日分カレンダー形式で作っています。
通し番号はそのままで
日付のグループ?ごとに
地域順に並び替えをしたいのですがマクロで可能でしょうか。
その地域がまとまってくれればいいのでフリガナ等は考慮しなくて大丈夫です。
B5:C9の範囲ひとつでならマクロで並び替えできたのですが
どうしても複数となるとわからなくなってしまいました。
乱文で申し訳ありませんがよろしくおねがいいたします。
No.5
- 回答日時:
任意の地域順で並べられるように書いてみました。
Sub test()
Range("B5").Select
Dim i As Integer '下方向への繰り返し
Dim x As Integer '右方向への繰り返し
For i = 1 To 5 '5週分繰り返す
For x = 1 To 7 '7日分繰り返す
If ActiveCell.Value <> "" Then 'データが入っていなければ次に
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=ActiveCell.Offset(0, 1), CustomOrder:="東京, 大阪, 福岡, 京都, 愛知"
.SetRange ActiveCell.Resize(5, 2)
.Header = xlNo
.Orientation = xlTopToBottom
.Apply
End With
End If
ActiveCell.Offset(0, 3).Select
Next x
ActiveCell.Offset(7, 0 - (3 * (x - 1))).Select
Next i
Range("B5").Select
MsgBox ("地域の並べ替えが終わりました")
End Sub
No.4ベストアンサー
- 回答日時:
こんにちは!
横からお邪魔します。
お示しの画像の配置で列方向には7日分、行方向には1か月の最終日まであるとしての一例です。
尚、①~⑤に関しては並び替えはしなくてよいのですよね。
一例です。
Sub Sample1()
Dim i As Long, j As Long
Dim myRng As Range
For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row Step 7 '//←B列5行目~B列最終行まで7行おき★//
For j = 2 To Cells(i, Columns.Count).End(xlToLeft).Column Step 3 '//←B列~最終列まで3列おき★//
If Cells(i, j) <> "" Then
Set myRng = Cells(i, j).Resize(5, 2)
myRng.Sort key1:=myRng(2), order1:=xlAscending, Header:=xlNo
End If
Next j
Next i
MsgBox "完了"
End Sub
※ 都道府県?の昇順で並び替えを行っていますので、
お示しの画像だと「福岡」が最後の方にかまとまってしまいます。
コード内の
>xlAscending
を
>xlDescending
にすれば降順になりますので、福岡が上の方にまとまりますね。
昇順・降順は好みで変更してみてください。m(_ _)m
No.3
- 回答日時:
なんどもごめんなさい。
、「 Range("A5:C9") のA5を ”A1セル” に見立てるので、C9セルは " C1 ” たことになる」というような意味になります。
も間違いで、正しくは、
、「 Range("A5:C9") のA5を ”A1セル” に見立てるので、C5セルを " C1 ” に見立てたことになる・・・(C9はC5に見立てたことになる」というような意味になります。
でした。
教えてGooって投稿を書き直せないのかしら・・・。すみません。
No.2
- 回答日時:
すみません。
変数設定の
Dim i_tate As Integer
のあとに
Dim i As Integer
Dim j As Integer
が抜けてましたので追記してください。
あと冒頭、「某」ではなく、」「私」でした。
No.1
- 回答日時:
某も初心者なので、古いやり方でしかもダサいコードですみませんが、例えば以下のような感じではどうでしょうか?
全バージョンで使える「Range.Sortメソッド」を使っています。
「ユーザー設定リスト」で設定した並べ替えを適用したかったら、
「Order1:=xlAscending」
の後ろに、
「, OrderCustom:=13」
をくっつけるみたいです。
(13はいくつめの設定かによって数字が変わるようです。)
詳しくは
http://officetanaka.net/excel/vba/tips/tips148.htm
などもご参考に。
なお、「o_Rng01.Range("C1")」は「Range.Rangeプロパティ」ですが、
「Range("A5:C9").Range("C1")」といったような意味合いですが、
この場合ですと、「 Range("A5:C9") のA5を ”A1セル” に見立てるので、C9セルは " C1 ” たことになる」というような意味になります。
なので、相対的な感じのセルの指定になります。(説明下手ですみません。)
よって、並べ替えしたいセル範囲がズレていっても、常に、「3列目の1行目を並べ替えのセルの基準にしている」という意味になります。
2007以降は、「Range.Sortメソッド」での並べ替えのほかに、上記サイトにもあるとおり、「Sortオブジェクト」(Worksheet.Sort?)が使えます。
なお、下記コードをもしお試しになるなら、必ずファイルのバックアップをとってからにしてください。(データをめちゃくちゃにしてしまうといけませんので・・・)
Sub test()
Dim o_Rng01 As Range
Dim i_yoko As Integer
Dim i_tate As Integer
i_yoko = 0
i_tate = 0
For i = 1 To 5 '縦のループ(週単位)
For j = 1 To 7 '横のループ(日単位)
Set o_Rng01 = Range(Cells(5 + i_tate, 1 + i_yoko), Cells(9 + i_tate, 3 + i_yoko))
'並べ替えしたいキーの列が空白だったら、プログラムを終わる。
If o_Rng01.Range("C1") = "" Then Exit Sub
o_Rng01.Sort Key1:=o_Rng01.Range("C1"), Order1:=xlAscending
Set o_Rng01 = Nothing
i_yoko = i_yoko + 3
Next j
i_yoko = 0
i_tate = i_tate + 7
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
EXCEL で複数行を1単位としてソートかけたいのですが
その他(ソフトウェア)
-
【Excel VBA】複数範囲の並べ替えは可能でしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
数式が入ったセルを含めて、数...
-
エクセルで合計欄を結合し、左...
-
エクセル:横長の表を改行して...
-
エクセルで小数を含む数値の抽出
-
Excelのセル内文字の並び替えに...
-
別のセルに値が入力されたら、...
-
エクセルで1列全部10倍したい
-
エクセルで表示されている数字...
-
入退社日より各月末の在籍者数...
-
エクセルの複数のセル均等に分...
-
エクセルで曜日に応じた文字を...
-
エクセルでセルの値分の個数の...
-
Excelでの検索結果を含む行だけ...
-
【EXCEL】指定したセルの値を他...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
別のセルに値が入力されたら、...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセル セル内の文字数を超え...
-
エクセルのsumifでかけ算してか...
-
エクセルで小数を含む数値の抽出
-
時間を「昼間」と「夜間」に分...
-
EXCELの特定セルを編集不可・コ...
おすすめ情報