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

どなたかご存じでしたら回答をお願いします。
数字選択式宝くじのナンバーズ3、ナンバーズ4の抽選結果をエクセルに登録しております。
これらの抽選結果数字を"左から小さい順に並び替える”のは下記のエクセル式でよいですか?

【エクセル式】
=SUM(SMALL(MID(TEXT(A1,"0000"),{1,2,3,4},1)*1,{1,2,3,4})*10^{3,2,1,0})

上記エクセル式を使用すれば下記のナンバーズ3、4の抽選結果数字が”左から小さい順”に並び
変わりますか?

【ナンバーズ3抽選結果(並び替え前)】
581
586
910
911
916
【ナンバーズ3抽選結果(並び替え後)】
158
568
019
119
169

【ナンバーズ4抽選結果(並び替え前)】
3811
3862
3873
4104
4115

【ナンバーズ4抽選結果(並び替え後)】
1138
2368
3378
0144
1145


合っている、間違っているというご指摘をお願いします。
また、上記式の説明もつけて頂けるとありがたいです。
これ以外に簡単な式があればそれも教えてください。
尚、使用しているエクセルは2007です。

以上

A 回答 (2件)

基本的に提示された数式で4ケタ以内の数字であれば、左から小さい順に数字を並べ替えることができます。


ただし、数式で表示されるデータは「数値」で「文字列」ではないため、最も小さい数字が0の場合はその数字が表示されまえんので注意が必要です。

例えば4ケタの数字の場合ならTEXT関数を使って、以下のような4ケタの数字を表示する数式にする必要があります。

=TEXT(元の数式,"0000")

>=SUM(SMALL(MID(TEXT(A1,"0000"),{1,2,3,4},1)*1,{1,2,3,4})*10^{3,2,1,0})

数式の意味は、
MID(TEXT(A1,"0000"),{1,2,3,4},1)*1
はA1セルの文字列から左から1~4番目の数字を1文字ずつ抜き出した配列を作成しています。

SMALL(MID(TEXT(A1,"0000"),{1,2,3,4},1)*1,{1,2,3,4})*10^{3,2,1,0})
上記の配列の中から小さい順に1~4番目の数字を取り出し、1番小さい数字には10の3乗(1000のこと)をかけ、2番目に小さい数字には10の2乗(100)をかけ、3番目に小さい数字には10の1乗(10)をかけ、4番目の数字には10の0乗(1)をかけた配列を作成してます。

最後にSUM関数で上記の4つの数字の合計を求めることにより小さい順に並んだ4ケタの数字を計算しています。
    • good
    • 0
この回答へのお礼

いつも解りやすい回答をしていただきありがとうございます。
エクセルの式は他の誰かが質問していた式なのですが、
"式の意味”が解ってないので、ナンバーズ3と4では式を変更しなければいけないのか?
がわかりませんでした。
兼用でいけそうなのでこのままで使用する事にします。

お礼日時:2011/08/16 23:39

兼用ならばもう一工夫


=TEXT(SUM(SMALL(MID(TEXT(A1,"0000"),{1,2,3,4},1)*1,{1,2,3,4})*10^{3,2,1,0}),REPT(0,LEN(A1)))
桁をばらして数値化し、並べ替えて足し算、文字数に合わせて表示。
    • good
    • 0
この回答へのお礼

ひとひねりした回答ありがとうございます。
早速、試してみます。

お礼日時:2011/08/17 07:53

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