[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行の並び替えをしたい』(ぺるしゃねこ)
Excel初心者です。
過去ログとかあさってみたのですがさっぱりで、、、どなたか教えていただけないでしょうか。
100行くらいあって今までコピーして貼り付けて並び替えてたのですがとても時間かかるのと間違えてしまうことがあってどうにかならないものかと思い質問させていただきました。
A B C D E
管理番号 顧客名 端末 開始日 ・ ・ ・ 設定 123 株式会社s タブレット1 2020/7/ 456 株式会社w タブレット2 2020/9/ 789 株式会社z タブレット5 2020/7/ 1012 株式会社k タブレット0 2021/8/
1111 株式会社g タブレット3 2020/7/ 22 株式会社p タブレット4 2020/1/ ・ ・ ・ 設定
上記のような表があるのですが
A列の設定と入った行から、設定と入った行までの日付を並び替えたいのですが、
Excelの機能の並び替えとフィルター?を使ってみたのですが変に並び替えてしまわれお手上げ状態です、、、
ご教示よろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:unknown >
まず、どの列を基準に並び替えしたいのかと >変に並べ替えてしまわれ がどのように意図通りでなかったかを教えていただけると回答つきやすいかと思います。 (*) 2021/09/10(金) 11:22
言葉足らずで申し訳ありません。
何故か日付順にならずに困ってます・・書式設定?が違うのか今調べてみています・・
A列の設定〜設定のあいだを基準とかはできないのでしょうか?
出来ればぼたんを押すと並び変わるっというのが理想なのですが・・・
無知で申し訳ないですがどうかよろしくお願いいたします。
(ぺるしゃねこ) 2021/09/10(金) 11:46
日付を並べ替え前
|[A] |[B] |[C] |[D] |[E] [1] | |管理番号|顧客名 |端末 |開始日 [2] | |・ | | | [3] | |・ | | | [4] | |・ | | | [5] |設定| | | | [6] | | 123|株式会社s|タブレット1|2020/7/ [7] | | 456|株式会社w|タブレット2|2020/9/ [8] | | 789|株式会社z|タブレット5|2020/7/ [9] | | 1012|株式会社k|タブレット0|2021/8/ [10]| | | | | [11]| | 1111|株式会社g|タブレット3|2020/7/ [12]| | 22|株式会社p|タブレット4|2020/1/ [13]| |・ | | | [14]| |・ | | | [15]| |・ | | | [16]|設定| | | |
日付を並べ替え後
|[A] |[B] |[C] |[D] |[E] [1] | |管理番号|顧客名 |端末 |開始日 [2] | |・ | | | [3] | |・ | | | [4] | |・ | | | [5] |設定| | | | [6] | | 22|株式会社p|タブレット4|2020/1/ [7] | | 123|株式会社s|タブレット1|2020/7/ [8] | | 789|株式会社z|タブレット5|2020/7/ [9] | | 1111|株式会社g|タブレット3|2020/7/ [10]| | 456|株式会社w|タブレット2|2020/9/ [11]| | 1012|株式会社k|タブレット0|2021/8/ [12]| | | | | [13]| |・ | | | [14]| |・ | | | [15]| |・ | | | [16]|設定| | | |
こんな感じになればいいんですかね。
(はまき) 2021/09/10(金) 11:59
並べ替えしたい箇所のみ選択 [データ]タブの"並び替え"というアイコンをクリック 最優先キー:列E 並べ替えのキー:セルの値(デフォルト)順序:昇順(デフォルト) これではダメですか? 自動化したければマクロの記録をとるなどしてください。 (*) 2021/09/10(金) 13:35
先ほど書き込んだ方法でダメだったのですか? こちらではうまくいっているので、ダメなら同じ手順を行った結果どうなるのかをここに貼り付けてください。 (*) 2021/09/10(金) 14:42
123 株式会社s タブレット1 2021/10/ 23 株式会社p タブレット5 2021/10/ 789 株式会社z タブレット5 2021/11/ 1111 株式会社g タブレット3 2021/11/ 24 株式会社p タブレット6 2021/8/ 456 株式会社w タブレット2 2021/8/ 1012 株式会社k タブレット0 2021/9/ 22 株式会社p タブレット4 2021/9/ 25 株式会社p タブレット7 2021/9/ 28 株式会社p タブレット10 2021/10/ 29 株式会社p タブレット11 2021/11/ 30 株式会社p タブレット12 2021/12/ 31 株式会社p タブレット13 2021/1/ 32 株式会社p タブレット14 2021/2/ 33 株式会社p タブレット15 2021/3/ 34 株式会社p タブレット16 2021/4/ 35 株式会社p タブレット17 2021/5/
Excelそのまま貼り付けてみました。
並び替えをやると下記のようになってしまいます。
31 株式会社p タブレット13 2021/1/ 123 株式会社s タブレット1 2021/10/ 23 株式会社p タブレット5 2021/10/ 28 株式会社p タブレット10 2021/10/ 789 株式会社z タブレット5 2021/11/ 1111 株式会社g タブレット3 2021/11/ 29 株式会社p タブレット11 2021/11/ 30 株式会社p タブレット12 2021/12/ 32 株式会社p タブレット14 2021/2/ 33 株式会社p タブレット15 2021/3/ 34 株式会社p タブレット16 2021/4/ 35 株式会社p タブレット17 2021/5/ 24 株式会社p タブレット6 2021/8/ 456 株式会社w タブレット2 2021/8/ 1012 株式会社k タブレット0 2021/9/ 22 株式会社p タブレット4 2021/9/ 25 株式会社p タブレット7 2021/9/
書式がおかしいのかと思いまして、日付になっていましたが、/が影響するのかな?とか考えて
ユーザー定義で種類をyyyy/m/にしてみたりしましたがかわらずでした。
(ぺるしゃねこ) 2021/09/10(金) 15:04
2021/10/のセルを選択した時に数式バーには 何と表示されているのかな? 2021/10/だったら文字列なので並び替えの結果は 正しいですよ (どん) 2021/09/10(金) 15:14
Sub Sample1() Dim rng As Range For Each rng In Selection If rng.Value Like "####/#/" Then rng.Value = Left(rng.Value, 5) & "0" & Right(rng.Value, 2) End If Next End Sub
Sub Sample2() Dim rng As Range For Each rng In Selection If rng.Value Like "####/0#/" Then rng.Value = Left(rng.Value, 5) & Right(rng.Value, 2) End If Next End Sub
(めざめるパワー) 2021/09/10(金) 15:26
Sub OmakeMacro() Dim SortRange As Range Dim Key As Long Set SortRange = Selection Key = SortRange.Columns.Count
Call Sample1(SortRange.Columns(Key).Cells) Call SortSample(SortRange, Key) Call Sample2(SortRange.Columns(Key).Cells) End Sub
Sub SortSample(SortRange As Range, KeyColumn As Long) With SortRange.Parent.Sort With .SortFields .Clear .Add Key:=SortRange.Columns(KeyColumn).Cells, _ SortOn:=xlSortOnValues, _ Order:=xlAscending End With .SetRange SortRange .Orientation = xlTopToBottom .Apply .SortFields.Clear End With End Sub
Sub Sample1(ReplaceRng As Range) Dim rng As Range For Each rng In ReplaceRng If rng.Value Like "####/#/" Then rng.Value = Left(rng.Value, 5) & "0" & Right(rng.Value, 2) End If Next End Sub
Sub Sample2(ReplaceRng As Range) Dim rng As Range For Each rng In ReplaceRng If rng.Value Like "####/0#/" Then rng.Value = Left(rng.Value, 5) & Right(rng.Value, 2) End If Next End Sub
とても雑なマクロですが参考程度に
(めざめるパワー) 2021/09/10(金) 15:38
めざめるパワー様
ありがとうございます!
何が行われているかさっぱりですがやりたかったことが一瞬にしてできました・・!
マクロってすごいんですね、、
大変厚かましいお願いなのですが、選択範囲を【A列の設定〜設定】の範囲の行を並び替えるというのは可能なのでしょうか・・・・?
(ぺるしゃねこ) 2021/09/10(金) 15:51
ああ、すみません二桁の存在を失念していました。 そしてシリアル値ではないのですね。
どんさんのおっしゃるように文字列だとそうなってしまうので、 日付の部分の入力をすべて「2021/9/1」のように日付もつけてください。
そのうえで、yyyy/m/に書式設定をして 先ほど私が書き込んだ手順でやってみてください。 ただし、順序が今度は「古い順」になるはずです。 (*) 2021/09/10(金) 15:53
Sub SortRangeReseaching()
Dim UsedRng As Range Dim Settei As Range Dim TopRng As Range Dim BottomRng As Range Dim SortRng As Range Dim rng As Range
Set UsedRng = ActiveSheet.UsedRange Set Settei = Intersect(Range("A:A"), UsedRng) Set Settei = Settei.SpecialCells(xlCellTypeConstants) Settei.Select For Each rng In Settei If rng.Value = "設定" Then If Not TopRng Is Nothing Then Set BottomRng = rng.Offset(-1) Set SortRng = Intersect(Range(TopRng, BottomRng).EntireRow, UsedRng) Call OmakeMacro(SortRng) End If Set TopRng = rng.Offset(1) End If Next Set SortRng = Intersect(Range(TopRng, TopRng.End(xlDown)).EntireRow, UsedRng) Call OmakeMacro(SortRng) End Sub
Sub OmakeMacro(SortRange As Range) Dim Key As Long Key = SortRange.Columns.Count
Call Sample1(SortRange.Columns(Key).Cells) Call SortSample(SortRange, Key) Call Sample2(SortRange.Columns(Key).Cells) End Sub
間違えていても元に戻せないので事前にブックを保存してから試してください。
(めざめるパワー) 2021/09/10(金) 16:04
めざめるパワー様
厚かましいお願い聞いていただき感謝です・・!
Key = SortRange.Columns.Count この部分が黄色くなってしまいます;;
Sub SortRangeReseaching()
Dim UsedRng As Range Dim Settei As Range Dim TopRng As Range Dim BottomRng As Range Dim SortRng As Range Dim rng As Range
Set UsedRng = ActiveSheet.UsedRange Set Settei = Intersect(Range("A:A"), UsedRng) Set Settei = Settei.SpecialCells(xlCellTypeConstants) Settei.Select For Each rng In Settei If rng.Value = "設定" Then If Not TopRng Is Nothing Then Set BottomRng = rng.Offset(-1) Set SortRng = Intersect(Range(TopRng, BottomRng).EntireRow, UsedRng) Call OmakeMacro(SortRng) End If Set TopRng = rng.Offset(1) End If Next Set SortRng = Intersect(Range(TopRng, TopRng.End(xlDown)).EntireRow, UsedRng) Call OmakeMacro(SortRng) End Sub
Sub OmakeMacro(SortRange As Range) Dim Key As Long Key = SortRange.Columns.Count
Call Sample1(SortRange.Columns(Key).Cells) Call SortSample(SortRange, Key) Call Sample2(SortRange.Columns(Key).Cells) End Sub
Sub SortSample(SortRange As Range, KeyColumn As Long)
With SortRange.Parent.Sort With .SortFields .Clear .Add Key:=SortRange.Columns(KeyColumn).Cells, _ SortOn:=xlSortOnValues, _ Order:=xlAscending End With .SetRange SortRange .Orientation = xlTopToBottom .Apply .SortFields.Clear End With End Sub
Sub Sample1(ReplaceRng As Range) Dim rng As Range For Each rng In ReplaceRng If rng.Value Like "####/#/" Then rng.Value = Left(rng.Value, 5) & "0" & Right(rng.Value, 2) End If Next End Sub
Sub Sample2(ReplaceRng As Range) Dim rng As Range For Each rng In ReplaceRng If rng.Value Like "####/0#/" Then rng.Value = Left(rng.Value, 5) & Right(rng.Value, 2) End If Next End Sub
上記を貼り付けたこーどなのですが、貼り間違えてますでしょか・・?;
よろしくお願いいたします。
(ぺるしゃねこ) 2021/09/10(金) 16:17
マクロはある程度コードの内容を理解していないと 思わぬ結果になりますよ >2021/9/1のように日付の部分を付けたら楽だったのですが 2021/9/→2021/9/1にするのは F7セルに =(E6&1)*1 ↓コピペしてF列基準で並び替えすれぱよいのでは (どん) 2021/09/10(金) 16:49
いじくっていたら理解しました!ありがとうございます・・!
こうもばちっと並びかわるととても気持ちがよいです。。
素晴らしい効率化になります・・!
度々すみません。
日付が入っている隣の列(F列)も日付と一緒に並び替えたい場合、どこを変更したらよいでしょうか・・
今上からのどんなことをしているか調べながらやっているのですが・・理解するのに時間がかかりそうなので(;_;)
よろしくお願いいたします。
(ぺるしゃねこ) 2021/09/10(金) 17:03
(*)さん 2021/09/10(金) 15:53 の場合
>「2021/9/1」のように日付もつけてください。
>そのうえで、yyyy/m/に書式設定をして
>順序が今度は「古い順」になるはずです。
ソート前
|[A] |[B] |[C] |[D] [1] | 123|株式会社s|タブレット1 |2021/10/ [2] | 23|株式会社p|タブレット5 |2021/10/ [3] | 789|株式会社z|タブレット5 |2021/11/ [4] |1111|株式会社g|タブレット3 |2021/11/ [5] | 24|株式会社p|タブレット6 |2021/8/ [6] | 456|株式会社w|タブレット2 |2021/8/ [7] |1012|株式会社k|タブレット0 |2021/9/ [8] | 22|株式会社p|タブレット4 |2021/9/ [9] | 25|株式会社p|タブレット7 |2021/9/ [10]| 28|株式会社p|タブレット10|2021/10/ [11]| 29|株式会社p|タブレット11|2021/11/ [12]| 30|株式会社p|タブレット12|2021/12/ [13]| 31|株式会社p|タブレット13|2021/1/ [14]| 32|株式会社p|タブレット14|2021/2/ [15]| 33|株式会社p|タブレット15|2021/3/ [16]| 34|株式会社p|タブレット16|2021/4/ [17]| 35|株式会社p|タブレット17|2021/5/
ソート後
|[A] |[B] |[C] |[D] [1] | 31|株式会社p|タブレット13|2021/1/ [2] | 32|株式会社p|タブレット14|2021/2/ [3] | 33|株式会社p|タブレット15|2021/3/ [4] | 34|株式会社p|タブレット16|2021/4/ [5] | 35|株式会社p|タブレット17|2021/5/ [6] | 24|株式会社p|タブレット6 |2021/8/ [7] | 456|株式会社w|タブレット2 |2021/8/ [8] |1012|株式会社k|タブレット0 |2021/9/ [9] | 22|株式会社p|タブレット4 |2021/9/ [10]| 25|株式会社p|タブレット7 |2021/9/ [11]| 123|株式会社s|タブレット1 |2021/10/ [12]| 23|株式会社p|タブレット5 |2021/10/ [13]| 28|株式会社p|タブレット10|2021/10/ [14]| 789|株式会社z|タブレット5 |2021/11/ [15]|1111|株式会社g|タブレット3 |2021/11/ [16]| 29|株式会社p|タブレット11|2021/11/ [17]| 30|株式会社p|タブレット12|2021/12/
(どん)さん 2021/09/10(金) の場合
> 2021/9/→2021/9/1にするのは
> F7セルに
> =(E6&1)*1
セル一部変更
|[A] |[B] |[C] |[D] |[E] [1] | 31|株式会社p|タブレット13|2021/1/ |2021/1/1 [2] | 32|株式会社p|タブレット14|2021/2/ |2021/2/1 [3] | 33|株式会社p|タブレット15|2021/3/ |2021/3/1 [4] | 34|株式会社p|タブレット16|2021/4/ |2021/4/1 [5] | 35|株式会社p|タブレット17|2021/5/ |2021/5/1 [6] | 24|株式会社p|タブレット6 |2021/8/ |2021/8/1 [7] | 456|株式会社w|タブレット2 |2021/8/ |2021/8/1 [8] |1012|株式会社k|タブレット0 |2021/9/ |2021/9/1 [9] | 22|株式会社p|タブレット4 |2021/9/ |2021/9/1 [10]| 25|株式会社p|タブレット7 |2021/9/ |2021/9/1 [11]| 123|株式会社s|タブレット1 |2021/10/|2021/10/1 [12]| 23|株式会社p|タブレット5 |2021/10/|2021/10/1 [13]| 28|株式会社p|タブレット10|2021/10/|2021/10/1 [14]| 789|株式会社z|タブレット5 |2021/11/|2021/11/1 [15]|1111|株式会社g|タブレット3 |2021/11/|2021/11/1 [16]| 29|株式会社p|タブレット11|2021/11/|2021/11/1 [17]| 30|株式会社p|タブレット12|2021/12/|2021/12/1
(はまき) 2021/09/10(金) 18:03
並び替え方法一つでもいろいろなやり方がある事が知れてとても勉強になりました!
ありがとうございます。
(ぺるしゃねこ) 2021/09/13(月) 09:08
そのままですべての列の並び替えをしますが、並び替えのキー列を
Key = SortRange.Columns.Count
と、一番右の列にしています。並び替え基準列は変数Keyの値変更で対応可能です。
(めざめるパワー) 2021/09/13(月) 10:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.