• ベストアンサー

「 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

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

蛇足だと思いますが、サンプルコード書いときます。 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

oshietecho-dai
質問者

お礼

即答、誠にあリがとうございます。 私も、ご回答ページをすぐに確認させて頂きました(びっくりしました)。 当方の返事がおそくなり申し訳ありませんでした。 いろいろ自分なりに使用したり、考えていました。 サンプルコードのおかげで、私の間違ってた箇所もよくわかりました。

その他の回答 (2)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆方法1 1)全体を、「降順」でソートします 2)上から「0」までを再度選択して、「昇順」でソートします ◆方法2 1)横の列に、=IF(A1=0,"んん",A1) と入力します 2)その列を「キー」に「昇順」でソートします 3)目障りなら、=IF(A1=0,"んん",A1) と入力した列を削除またはデータを消去します

oshietecho-dai
質問者

お礼

ご回答、どうも有難うございました。 こおいう方法もおありなんですね。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんばんは。 ソート対象範囲内にある 0 を例えば、「zzzん_0」みたいなソートしたときに 一番後にくるような適当な文字列に置換してから、ソートを実行し、その後で 再置換して 0 に戻したら? 0 をカットしてしまうのは、ちょっと乱暴だけど、この方法なら元に戻せますよ。

関連するQ&A