- ベストアンサー
VBA ソートすると、1、11、2,3になって・・
VBAにて下記のようなコードでソートすると、1、11、2,3になってしまいました。 数字ではなく、文字として認識していると、このようになると書かれていました。 どうすれば、1、2、3、11と並び替えれるのしょうか? If Numbers1(i) > Numbers1(j) Then
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>どうすれば、1、2、3、11と並び替えれる 方法1) 自作プログラムでソートせず、エクセルに任せます。 sub macro1() range("A:A").sort key1:=range("A1"), order1:=xlascending, header:=xlno, dataoption1:=xlsorttextasnumbers end sub 方法2) 変更前: If Numbers1(i) > Numbers1(j) Then 変更後: If Numbers1(i) - Numbers1(j) > 0 then
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1719/2589)
No3です。訂正 Numbers ↓ Numbers1(i)
- kkkkkm
- ベストアンサー率66% (1719/2589)
なんか数字が全角ぽいので Val(StrConv(Numbers, vbNarrow)) の方がいいかもしれません。
お礼
回答ありがとうございます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
Val(Numbers1(i)) とかにして数値に変換してください。
お礼
回答ありがとうございます。 こうすればよいのですね。
- nag0720
- ベストアンサー率58% (1093/1860)
もし、Numbers1の桁数がすべて10桁以内であるなら、 If Right("0000000000" & Numbers1(i), 10) > Right("0000000000" & Numbers1(j), 10) Then とすれば、1、2、3、11となる。
お礼
回答ありがとうございます。 このような方法で、なぜ数字とみなすようになるのでしょうか?
お礼
回答ありがとうございます。 方法2がシンプルで良さそうですね。