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件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.2ベストアンサー20pt
モジュールの最初に
Option Compare Text
の宣言をいれておけば、多分お望みの結果になるでしょう。
(最大は「'- -UBH (L/T 15)」になるみたいだけど?)
ついでながら、
Dim saisyou, saidai As String
では、saidaiはStringで定義されますが、saisyouはVariantで定義されます。
この回答へのお礼
回答ありがとう御座います。
お蔭様で、希望どうりの結果が得られました。
しかし、Option Compareの説明を読み、
過去、作ったマクロが心配になりました。(^^;
No.1ベストアンサー10pt
こんにちは
エクセルが内部で持つ並べ替えの順序と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 { | } ~
ね、全然違うでしょう。おまけに一重引用符 (') とハイフン (-) は無視される(例外あるが)とあります。
この回答へのお礼
回答ありがとう御座います。
やっぱりそうですか。
必要があってのロジックでしょうが・・・・
お蔭様で、参考になりました。
今後とも宜しくお願い致します。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示












