アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAにて下記のようなコードでソートすると、1、11、2,3になってしまいました。
数字ではなく、文字として認識していると、このようになると書かれていました。
どうすれば、1、2、3、11と並び替えれるのしょうか?

If Numbers1(i) > Numbers1(j) Then

A 回答 (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
    • good
    • 4
この回答へのお礼

回答ありがとうございます。
方法2がシンプルで良さそうですね。

お礼日時:2014/07/06 21:17

No3です。

訂正

Numbers

Numbers1(i)
    • good
    • 0

なんか数字が全角ぽいので


Val(StrConv(Numbers, vbNarrow))
の方がいいかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2014/07/06 21:16

Val(Numbers1(i))


とかにして数値に変換してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
こうすればよいのですね。

お礼日時:2014/07/06 21:16

もし、Numbers1の桁数がすべて10桁以内であるなら、



If Right("0000000000" & Numbers1(i), 10) > Right("0000000000" & Numbers1(j), 10) Then

とすれば、1、2、3、11となる。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

このような方法で、なぜ数字とみなすようになるのでしょうか?

お礼日時:2014/07/06 21:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A