- ベストアンサー
EXCELの並び替えで質問です。
初歩的な質問で申し訳有りません。 下記は、EXCELで昇順に並び替えた結果です。 (セルの書式設定は最初から「文字」、内容の先頭には’が入っています。解かりずらいですが1件目のデータはマイナス2個です。) 発注先部品コード '-- '---- '-------------- '- -UBH (L/T 15) '- BLK (H - ) 並び替え後、次のマクロで最大と最小を実行するとsaisyoは- -UBH (L/T 15) ,saidaiは--------------となります。並び替えと同じ結果にするにはどうしたらよいのでしょうか? Dim saisyou, saidai As String saisyou = "ZZZZZZZZZZZZZZZZZZZZ" For gyou = 2 To 6 If saisyou > Cells(gyou, "a") Then saisyou = Cells(gyou, "a") End If If saidai < Cells(gyou, "a") Then saidai = Cells(gyou, "a") End If Next gyou 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
モジュールの最初に Option Compare Text の宣言をいれておけば、多分お望みの結果になるでしょう。 (最大は「'- -UBH (L/T 15)」になるみたいだけど?) ついでながら、 Dim saisyou, saidai As String では、saidaiはStringで定義されますが、saisyouはVariantで定義されます。
その他の回答 (1)
- A88No8
- ベストアンサー率52% (836/1606)
こんにちは エクセルが内部で持つ並べ替えの順序とVBAが評価する文字コードとの間にずれがあるので同じならないです。 詳しくは、エクセルのヘルプで「既定の並べ替え順序」を検索して下さい。 例としてエクセルのルールの一部だけとりだして説明します。 エクセルは(1)の順序で小さいと評価しますがプログラムは(2)のように評価しています。エクセルに合わせるならエクセルの要件に合うプログラムを作る必要があります。 (1)エクセルの独自ルール(の一部) 0 1 2 3 4 5 6 7 8 9 (スペース) ! " # $ % & ( ) * , . / : ; ? @ [ ] ^ _ ` { | } ~ + < = > \ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (2)VBAが文字列を評価するときのルール(情報交換用符号として使われる文字コード) (スペース) ! " # $ % & ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ね、全然違うでしょう。おまけに一重引用符 (') とハイフン (-) は無視される(例外あるが)とあります。
お礼
回答ありがとう御座います。 やっぱりそうですか。 必要があってのロジックでしょうが・・・・ お蔭様で、参考になりました。 今後とも宜しくお願い致します。
お礼
回答ありがとう御座います。 お蔭様で、希望どうりの結果が得られました。 しかし、Option Compareの説明を読み、 過去、作ったマクロが心配になりました。(^^;