Page 512 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ソートに関しての質問 あみやき 02/12/12(木) 10:21 ┗Re:ソートに関しての質問 Jaka 02/12/13(金) 10:51 ┗Re:ソートに関しての質問 あみやき 02/12/13(金) 11:03 ┗Re:ソートに関しての質問 Jaka 02/12/13(金) 11:49 ┗Re:ソートに関しての質問 あみやき 02/12/13(金) 12:55 ┗Re:ソートに関しての質問 Jaka 02/12/13(金) 13:56 ┗少し手直し Jaka 02/12/13(金) 14:04 ┣お礼が遅れて申し訳ないです あみやき 02/12/16(月) 11:33 ┗ちょっとしたバグです。 あみやき 02/12/17(火) 9:47 ┗誰もフォローしといてくれなかったのね! クッパ 02/12/25(水) 15:58 ┣名前が変わっているのに気づきませんでした。by Jaka Jaka 02/12/25(水) 16:02 ┗Re:誰もフォローしといてくれなかったのね! あみやき 03/1/7(火) 21:29 ─────────────────────────────────────── ■題名 : ソートに関しての質問 ■名前 : あみやき ■日付 : 02/12/12(木) 10:21 -------------------------------------------------------------------------
いつもお世話になっております。 ソートに関しての質問です。 どなたかご教授ください。 A行をからH行までソートしたいのですが、横のラインは崩さずに、Aを第一キーBを第二キーに・・・。というような感じでソートをかけたいのですが、問題がありまして、あ行は確実に存在するのですが、B行以降は空白行の場合もあります。その場合でもつめたりせずに、横のラインを保ちつつ、ソートをするにはどうしたら良いでしょうか?? 例えばB行が空白行の場合、Aを第一キーBを第二キーとしていたものをAを第一キーCを第二キー・・・。といったようにしたいです。 どなたかよろしくお願いします。 lastclm = Range("a1").End(xlToRight).Column For i = 0 To lastclm - 1 m = lastclm - i Range("a1").Sort key1:=Cells(1, m), order1:=xlAscending, _ header:=xlNo Next i |
おはようございます。 あみやきさんのコードを試してみた所、うまくいっている様ですが...。 ご希望の物とどう違うのかアホな私には良く解りませんでした。 ソートする前のデータの並びと、ソート後のデータパターン例なども提示された方が良いと思いますけど...。 言葉だけで説明するのも難しいでしょうし。 私は、国語力が無いから図解入りが好みです。 |
Jaka さん、おはようございます。 いつもお世話になっております。 >あみやきさんのコードを試してみた所、うまくいっている様ですが...。 >ご希望の物とどう違うのかアホな私には良く解りませんでした。 > >ソートする前のデータの並びと、ソート後のデータパターン例なども提示された方が良いと思いますけど...。 >言葉だけで説明するのも難しいでしょうし。 >私は、国語力が無いから図解入りが好みです。 例えばこんな感じで、B列が空白になる可能性があります(ならない場合もあります) −−−−−−−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333333| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333311| −−−−−−−−−−−−−−−−−−−−−−− | 0| |99999999| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333333| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPK| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPP| −−−−−−−−−−−−−−−−−−−−−−− よろしくお願いします。 |
>例えばこんな感じで、B列が空白になる可能性があります(ならない場合もあります) > >−−−−−−−−−−−−−−−−−−−−−−− >| A | B | C | >−−−−−−−−−−−−−−−−−−−−−−− >| 1111| | 3333333| >−−−−−−−−−−−−−−−−−−−−−−− >| 1111| | 3333311| >−−−−−−−−−−−−−−−−−−−−−−− >| 0| |99999999| >−−−−−−−−−−−−−−−−−−−−−−− >| 1111| | 3333333| >−−−−−−−−−−−−−−−−−−−−−−− >| あいうえ| |PPPPPPPK| >−−−−−−−−−−−−−−−−−−−−−−− >| あいうえ| |PPPPPPPP| >−−−−−−−−−−−−−−−−−−−−−−− あの〜、まだ良く解らないんですけど。 これは、ソート後ですか?ソート前でしょうか? できれば2つ記載してほしかったんですが...。 本当に読解力が無くてすみません。 |
いえいえわかりづらくて申し訳ないです。 これがソート前で −−−−−−−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333333| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333311| −−−−−−−−−−−−−−−−−−−−−−− | 0| |99999999| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333334| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPK| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPP| −−−−−−−−−−−−−−−−−−−−−−− ソート後が −−−−−−−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−−−−−−− | 0| |99999999| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333311| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333333| −−−−−−−−−−−−−−−−−−−−−−− | 1111| | 3333334| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPK| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| |PPPPPPPP| −−−−−−−−−−−−−−−−−−−−−−− もし以下のようにソート前にB列が空白列でなければ −−−−−−−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−−−−−−− | 1111| 1| 3333333| −−−−−−−−−−−−−−−−−−−−−−− | 1111| 2| 3333311| −−−−−−−−−−−−−−−−−−−−−−− | 0| 3|99999999| −−−−−−−−−−−−−−−−−−−−−−− | 1111| 4| 3333334| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| 5|PPPPPPPK| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| 6|PPPPPPPP| −−−−−−−−−−−−−−−−−−−−−−− ソート後は −−−−−−−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−−−−−−− | 0| 3|99999999| −−−−−−−−−−−−−−−−−−−−−−− | 1111| 1| 3333333| −−−−−−−−−−−−−−−−−−−−−−− | 1111| 2| 3333311| −−−−−−−−−−−−−−−−−−−−−−− | 1111| 4| 3333334| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| 5|PPPPPPPK| −−−−−−−−−−−−−−−−−−−−−−− | あいうえ| 6|PPPPPPPP| −−−−−−−−−−−−−−−−−−−−−−− となります。 ご理解いただけましたか? よろしくお願いします。 |
こんなんでどうでしょうか。 Sub momo() lastclm = Cells(1, Cells.Columns.Count).End(xlToLeft).Column lastrow = Cells(Cells.Rows.Count, 1).End(xlUp).Row For i = 0 To lastclm - 1 M = lastclm - i If Application.CountA(Range(Cells(1, M), Cells(lastrow, M))) > 0 Then Range("A1", Cells(lastrow, lastclm)).Sort key1:=Cells(1, M), order1:=xlAscending, _ header:=xlNo End If Next i End Sub |
Sub mo改() lastclm = Cells(1, Cells.Columns.Count).End(xlToLeft).Column lastrow = Cells(Cells.Rows.Count, 1).End(xlUp).Row For i = lastclm To 1 Step -1 If Application.CountA(Range(Cells(1, i), Cells(lastrow, i))) > 0 Then Range("a1", Cells(lastrow, lastclm)).Sort key1:=Cells(1, i), order1:=xlAscending, _ header:=xlNo End If Next i End Sub |
Jaka さん、こんにちは。 いつもいつもお世話になりっぱなしで、ほんと感激です。 実行してみましたら、見事うまく処理を行うことが出来ました。 ありがとうございました。 今後ともよろしくお願いします。 |
Jaka さん、おはようございます。 >Sub mo改() > lastclm = Cells(1, Cells.Columns.Count).End(xlToLeft).Column > lastrow = Cells(Cells.Rows.Count, 1).End(xlUp).Row > For i = lastclm To 1 Step -1 > If Application.CountA(Range(Cells(1, i), Cells(lastrow, i))) > 0 >Then > Range("a1", Cells(lastrow, lastclm)).Sort key1:=Cells(1, i), >order1:=xlAscending, _ > header:=xlNo > End If > Next i >End Sub なのですが、A列目が空白の場合、うまくソートが行えないのですが、例えば、A列、B列ともに空白で、C〜F列をソートするといった場合はどう処理をすればよろしいでしょうか??もちろんA,B列中にデータがある場合はそちらが優先でKEYになるものとします。 お忙しいところ申し訳ございませんが、ご指導よろしくお願いします。 |
>A列目が空白の場合、うまくソートが行えないのですが、例えば、A列、B列ともに空白で、C〜F列をソートするといった場合はどう処理をすればよろしいでしょうか??もちろんA,B列中にデータがある場合はそちらが優先でKEYになるものとします。 これは、 >A行をからH行までソートしたいのですが、横のラインは崩さずに、Aを第一キーBを第二キーに・・・。というような感じでソートをかけたいのですが、問題がありまして、あ行は確実に存在するのですが、B行以降は空白行の場合もあります。その場合でもつめたりせずに、横のラインを保ちつつ、ソートをするにはどうしたら良いでしょうか?? と 提示されたデータなどからA列と1行目には、空白セルが無いと判断して下記コードを使いました。 lastclm = Cells(1, Cells.Columns.Count).End(xlToLeft).Column lastrow = Cells(Cells.Rows.Count, 1).End(xlUp).Row 上記コードのlastclm 、lastrowとソート範囲をあみやきさんの使用する方法に適した方法で求めてください。 最初UsedRangeを使おうかと思いましたが、欠点があるので止めました。 |
ここに何も書いてないと拒否されるんですね。 知らなかった。 |
クッパ さんこんばんは。 お礼が遅れて申し訳ございません。 どうもありがとうございました。 大変参考になりました。 助かりました。 本当にありがとうございましたm(__)m |