• ベストアンサー

フィルタと並び替えについて

今、従来の在庫管理表が古くなったので、 新しい在庫管理表をランダムに打ち込んでリスト化しています。 従来の在庫管理表のリスト番号を 新しい在庫管理表に以下のように入れました 1ページ目の5行目を1-5と言うように 1-1から1-25 2-1から2-25 ・・ ・・ ・・ ・・ 50-1から50-19 ・・ ・・ これは後で商品の確認をするために入れたのですが、 オートフィルタでフィルタオプションに1-*/等しい and 1-**/等しいを設定し、 1-1から1-25を抽出、昇順に並べ替えを掛けてみると 1-1 1-10 ・ ・ ・ 1-19 1-2 1-20 1-21 ・ ・ 1-24 1-25 1-3 1-4 ・ ・ ・ 1-9 のような順番に並んでします。 どうも、-が小数点として判断されているようです。 行数が順番に並ぶように 直す方法はあるでしょうか? わかる方よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#2です。 半角の1-1等から01-01に変換を考えてみましたが なかなか難しい。 1-1を2004年一月1日に解釈する(37987)力(ちから)が非常に強く上手く行かなかった。 関数で簡単な回答が出てくれば良いが。 それでユーザー関数を作りました。 Function zeroa(s) p = InStr(s, "-") l = Len(s) Select Case l Case 3 zeroa = "0" & Mid(s, 1, 2) & "0" & Right(s, 1) Case 4 Select Case p Case 2 zeroa = "0" & Mid(s, 1, 2) & Right(s, 2) Case 3 zeroa = Mid(s, 1, 3) & "0" & Right(s, 1) End Select Case 5 zeroa = s End Select End Function これを作ると 1-1 01-01 1-2 01-02 11-1 11-01 12-12 12-12 11-1 11-01 12-2 12-02 99-99 99-99 1-12 01-12 12-23 12-23 23-2 23-02 のようになりました。 作り方は、ツール―マクロ-VBEをクリックしての画面で、メニューの挿入-標準モジュールをクリックしての画面にコピペする。 使い方はB1に=zeroa(a1)と入れて下に複写する。 結果は上記。 #2でカナ(子)文字->カナ(小)文字に訂正します。

AstroGuy
質問者

お礼

遅くなってすみません。 ありがとうございました。 お陰でできるようになりました。

その他の回答 (3)

  • kazu333
  • ベストアンサー率28% (54/187)
回答No.3

#1、#2の方の言われる通りです。 このフィールドは文字列ですから、そうなります。 ページ数と行数、それぞれの最大値(例えば245ページ・54行) の桁数で値を入力して、全ての文字数が同じになるようにしておけばOKです。 001-01 011-25 とかのように桁数を揃えます。

AstroGuy
質問者

お礼

遅くなってすみません。 ありがとうございました。 お陰でできるようになりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>どうも、-が小数点として判断されているようです。 全くの見当はずれです。 1-1が1月1日にならずに残っているということは この列が表示形式は文字列になっているはずです。 文字列をソートする場合のルールはあらゆるコンピュタ・ソフト亘って共通で、2つがどちらが先かは (1)左桁からから一桁ずつ比較して考える (2)同一桁は文字コードの小さい方が先(昇順の場合) 記号-数字-英大文字-英小文字-カナ(子)文字の順です。 (3)文字のない方(短い方、早く終わった方)が先 1-1 1-19 1-20 は当たり前。 普通にしようとすると サブ番号が2桁の場合、  1- 1  かまたは 01-01 の形式にしないといけない。

  • gtozeki
  • ベストアンサー率22% (11/50)
回答No.1

1-1を1-01にすればいいと思いますが・・・どうでしょうか

AstroGuy
質問者

お礼

遅くなってすみません。 ありがとうございました。 お陰でできるようになりました。