- ベストアンサー
「 0 」 を除いて ( 無視して ) ソートするには?
データに「0」があることが原因だと思うのですが! データに「0」がある行だけだと思いますが、「0」が頭に集まったり、 データ途中に連続に混入したりして、きちんとソートできません。 いろいろ試しているんですが、うまく出来ません。 どおしても、「0」が邪魔になります。 「0」を非表示にしても、フォント色が白になるだけで、どおしても「0」は削除できません。 置換えで「0」を削除するしかないのでしょうか? 良い方法がおありでしたら、何卒ご教授くださいませ。 --------- Private Sub 昇順に並び替え() Dim r As Range With Worksheets(Worksheets.Count) For Each r In .Range("A2", .Range("A65536").End(xlUp)) r.Offset(0, 1).Resize(, 255).Sort Key1:=r.Offset(0, 1), _ Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _ Orientation:=xlLeftToRight Next r End With End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
蛇足だと思いますが、サンプルコード書いときます。 Private Sub 昇順に並び替え() Dim r As Range Dim rSortArea As Range With Worksheets(Worksheets.Count) ' ソート範囲を参照 Set rSortArea = .Range("A2", .Range("A65536").End(xlUp)) _ .Offset(0, 1).Resize(, 255) ' 0 が邪魔になるので一時的に置換 rSortArea.Replace What:="0", _ Replacement:="zzzん_0", _ LookAt:=xlWhole ' 行単位で行方向のソート実行 For Each r In rSortArea.Rows r.Sort Key1:=r, _ Order1:=xlAscending, _ Header:=xlNo, _ OrderCustom:=1, _ Orientation:=xlLeftToRight Next r ' 0 を復元 rSortArea.Replace What:="zzzん_0", _ Replacement:="0", _ LookAt:=xlWhole End With Set rSortArea = Nothing End Sub
その他の回答 (2)
- maron--5
- ベストアンサー率36% (321/877)
◆方法1 1)全体を、「降順」でソートします 2)上から「0」までを再度選択して、「昇順」でソートします ◆方法2 1)横の列に、=IF(A1=0,"んん",A1) と入力します 2)その列を「キー」に「昇順」でソートします 3)目障りなら、=IF(A1=0,"んん",A1) と入力した列を削除またはデータを消去します
お礼
ご回答、どうも有難うございました。 こおいう方法もおありなんですね。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんばんは。 ソート対象範囲内にある 0 を例えば、「zzzん_0」みたいなソートしたときに 一番後にくるような適当な文字列に置換してから、ソートを実行し、その後で 再置換して 0 に戻したら? 0 をカットしてしまうのは、ちょっと乱暴だけど、この方法なら元に戻せますよ。
お礼
即答、誠にあリがとうございます。 私も、ご回答ページをすぐに確認させて頂きました(びっくりしました)。 当方の返事がおそくなり申し訳ありませんでした。 いろいろ自分なりに使用したり、考えていました。 サンプルコードのおかげで、私の間違ってた箇所もよくわかりました。