新しく質問する

EXCELの並び替えで質問です。

役に立った:1件
  • 質問者:0002184228
  • 投稿日時:2009/02/20 13:40
  • 困り度:困ってます

初歩的な質問で申し訳有りません。
下記は、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

宜しくお願い致します。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)
  • 参考になった:1件

No.2ベストアンサー20pt

  • 回答者:fujillin
  • 回答日時:2009/02/20 14:58

モジュールの最初に
 Option Compare Text
の宣言をいれておけば、多分お望みの結果になるでしょう。
(最大は「'- -UBH (L/T 15)」になるみたいだけど?)

ついでながら、
 Dim saisyou, saidai As String
では、saidaiはStringで定義されますが、saisyouはVariantで定義されます。

通報する

この回答へのお礼

回答ありがとう御座います。
お蔭様で、希望どうりの結果が得られました。
しかし、Option Compareの説明を読み、
過去、作ったマクロが心配になりました。(^^;

  • 参考になった:0件

No.1ベストアンサー10pt

  • 回答者:A88No8
  • 回答日時:2009/02/20 14:40

こんにちは

 エクセルが内部で持つ並べ替えの順序と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 { | } ~

ね、全然違うでしょう。おまけに一重引用符 (') とハイフン (-) は無視される(例外あるが)とあります。

通報する

この回答へのお礼

回答ありがとう御座います。
やっぱりそうですか。
必要があってのロジックでしょうが・・・・
お蔭様で、参考になりました。
今後とも宜しくお願い致します。

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ