【問題】
B列1行目から、10個の駅名が下のように入力されている。
つだぬま
みもみ
かつただい
ふなばし
さくら
なりた
にしふなばし
やちよだい
おおくぼ
うすい
これをC列1行目から、昇順に並べ替えて・・・
うすい
おおくぼ
かつただい
さくら
つだぬま
なりた
にしふなばし
ふなばし
みもみ
やちよだい
・・・としたい。数式を使って解決するにはどうすればよいか?
尚、標準機能のソート、マクロを使うのは禁止とする。
« 三四郎関数でソート・・・【解答】 | メイン | 三四郎関数でソート(第2弾)・・・【解答】 »
最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。
画像を読み取れない場合は 別の画像を表示してください。
アカウント情報
(名前は必須です。メールアドレスは公開されません。)
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
三四郎はまったくわからないので、EXCELでの数式です。
A1=CODE(B1)*10000+CODE(MID(B1,2,1))+CODE(MID(B1,3,1))/10000
C1=INDEX($B$1:$B$10,MATCH(SMALL($A$1:$A$10,ROW()),$A$1:$A$10,0))
とりあえず三文字めまでの判定としました。
この例題なら=CODE(A1)だけでいいと思いますが、念のため。
投稿情報: khan | 2007年7 月24日 (火曜日) 午前 09時24分
Khanさん、投稿有り難うございます。
正解で~す!!(^。^)
>EXCELでの数式です。
私も三四郎よりエクセルの方が
得意なのでエクセルでの投稿は
全く構いません。(^。^)
>とりあえず三文字めまでの判定としました。
エクセルでは最終文字まで考慮して
判定できます(^^ゞ
三四郎でも・・・。
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午前 09時56分
まいど失礼します。
Excelの場合
"あお""あか"=FALSE
で解るように、
文字列の昇降を認識してますから、
C1:C10に
{=INDEX($B$1:$B$10,MATCH(ROW($1:$10),COUNTIF($B$1:$B$10,"<="&$B$1:$B$10),0),)}
で、どうでしょう。
投稿情報: えくせるバカ | 2007年7 月24日 (火曜日) 午前 10時31分
すいません
"あお"と"あか"の間に入れた筈の
記号が消えてました。
"あお" > "あか"=False
"あお" < "あか"=True
です!
投稿情報: えくせるバカ | 2007年7 月24日 (火曜日) 午前 10時39分
駅名なら、同じものはない、
ということで、三四郎なら
A1に
=String(Count(Search("<=" & "B" & Row(B1),B$1:B$10)))
C1に
=VLookup(Row(A1) & "",A$1:B$10,2)
でできるけど、
今一面白くない。
別解を考えます。(^^)ゞ
投稿情報: 悪児 | 2007年7 月24日 (火曜日) 午後 01時15分
えくせるバカさん、悪児さん、こんにちは。
くまぷーの考えていた回答は
エクセルならえくせるバカさんのもの、
三四郎ならば悪児さんのものと
ほぼ同じです。(^^ゞ
二人とも回答作りが早いですね。(^^ゞ
流石です。
>今一面白くない。
>別解を考えます。(^^)ゞ
楽しみです。(^。^)
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午後 02時56分
エーと、
A1に =If(B1,Count(Search("<='" & B1 & "'",B$1:B$11))-Count(Search("='" & B1 & "'",B1:B$11))+1+Fp(Row(A1)*0.01))
C1に =Index($B$1:$B$11,1,Fp(Small($A$1:$A$11,Row($C1)))*100)
順位づけしました。
え?この解答を見たことがある?ひねりがない?これは失礼しました。(^^)ゞ
投稿情報: きっちー | 2007年7 月24日 (火曜日) 午後 04時04分
きっちーさん、こんばんは。
きっちーさんのは同名にも
対応しているわけですね。(^。^)
>ひねりがない?これは失礼しました。(^^)ゞ
いやいや、解法がある程度パターン化してしまうのはやむを得ないことかと・・・。
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午後 07時42分
あらーーー
コメントを書いたと思ったが、ない・・・
投稿を押さなかったのかなーーー
で、もう一回。
code と、
文字のソート順の違うヤツあったよねーーー
でも、駅名ではないか??・・・そだよねーー
投稿情報: ジョー3 | 2007年7 月24日 (火曜日) 午後 09時15分
>コメントを書いたと思ったが、ない・・・
えっ、第一弾の方にありますが・・・
あれのことでは?
http://kumapooh.justblog.jp/blog/2007/07/post_ceb7.html
>code と、
文字のソート順の違うヤツあったよねーーー
えっ、何のことでしたっけ?(^^ゞ
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午後 09時22分
>>code と、
文字のソート順の違うヤツあったよねーーー
>えっ、何のことでしたっけ?(^^ゞ
ヴィーナス駅は(あったなら)
ヴィーナス 9588
うさぎ 9254
おがわ 9258
うさぎ 9254
おがわ 9258
ヴィーナス 9588
文字ソートと、codeソートの違いがあった。
でも、日本人ダイジョウブ!!ね、
投稿情報: ジョー3 | 2007年7 月24日 (火曜日) 午後 09時34分
あ、くまぷーです。
今、落ち着いて検証してみたら
えくせるバカさんの式でやると
全部「うすい」になってしまう・・・。
どぼじて?!?(・_。)?(。_・)?
エクセル2000,2007でやってみました。
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午後 10時10分
>文字ソートと、codeソートの違いがあった。
あ、わざわざ、どもです。(^^ゞ
片仮名交じりですね。
例題の駅名は全て京成線のものなのですが・・・
そう言えばユーカリが丘ってのがあったな!!
昔はセンター競馬場前というのが
ありました。ちなみに「センター」というのは
船橋ヘルスセンターのことです。
昔、そこでよく「ドリフの8時だよ、全員集合!!」の
録画撮りをしていましたっけ・・・。(^^ゞ
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午後 10時15分
>えくせるバカさんの式でやると
全部「うすい」になってしまう・・・。
{=INDEX($B$1:$B$10,MATCH(ROW(A1),COUNTIF($B$1:$B$10,"<="&$B$1:$B$10),0),)}
のようですね。
配列数式は、よく分からん・・・(^^;)(^^;)
投稿情報: 悪児 | 2007年7 月25日 (水曜日) 午前 03時03分
悪児の作ったExcel版は、
次の2つです。
{=INDEX(B$1:B$10,MOD(SMALL((CODE(B$1:B$10)-9249)*10000+(CODE(MID(B$1:B$10&"ぁぁ",2,1))-9249)*100+(CODE(MID(B$1:B$10&"ぁぁ",3,1))-9249)+ROW(C$1:C$10)*0.001,ROW(C1)),1)*1000,1)}
{=INDEX(B$1:B$10,MOD(SMALL(COUNTIF(B$1:B$10,"<=" & B$1:B$10)*1000+ROW(A$1:A$10),ROW(C1)),1000),1)}
Matchは、思いつかなかった・・・(^^;)(^^;)
投稿情報: 悪児 | 2007年7 月25日 (水曜日) 午前 03時24分
三四郎別解は、
A1に
=Count(Search("<=B" & Row(A1),B$1:B$10))*1000+Row(A1)
C1に
=Index(B$1:B$10,1,Small(A$1:A$10,Row(C1)) MOD 1000)
で、きっちーさんとほぼ同じ。
なお、同名対策は、
ソートするのが名前だけの場合、
必要がないので、省略しました。
配列数式のない三四郎じゃ、
これ以上は、ないかも・・・(^^;)(^^;)
投稿情報: 悪児 | 2007年7 月25日 (水曜日) 午前 03時37分
>えくせるバカさんの式でやると
>全部「うすい」になってしまう・・・
コメントがわかり難かったかも・・・
まず、C1:C10を選択した状態で
アクティブなC1に
=INDEX($B$1:$B$10,MATCH(ROW($1:$10),COUNTIF($B$1:$B$10,"<="&$B$1:$B$10),0),)
を入力してCtrl+Shift+Enter
でやってみてください(*^^)v
投稿情報: えくせるバカ | 2007年7 月25日 (水曜日) 午前 09時57分
えくせるバカさん、できました。(^。^)
ありがとうございます。
投稿情報: くまぷー | 2007年7 月25日 (水曜日) 午後 07時16分
悪児さん、こんばんは。エクセルの上の式はコード番号でソートしているので
「センターけいばじょうまえ」などの片仮名交じりの駅名が入ると、ひらがな駅名の後に並びますが、下の式はひらがな・片仮名混合でもあいうえお順に並びます。
このあたりの動きはくまぷーのものと同じですね。
でも、"ぁぁ"は何なんだろう?
解説キボンヌm(__)m
>配列数式のない三四郎じゃ、
>これ以上は、ないかも・・・(^^;)(^^;)
配列数式をサポートしていなくても
実用的には問題はないと思うけど
遊ぶにはちょっと淋しい・・・
投稿情報: くまぷー | 2007年7 月25日 (水曜日) 午後 09時16分
>でも、"ぁぁ"は何なんだろう?
駅名が、3文字未満だと、Codeでエラーが出てしまうので、そのエラー対策です。
ところで、2文字の駅名はすぐ思い浮かぶと思いますが、
1文字の駅名って、あると思います?
駅名で、もうひとつ。
京成には、「にしふなばし」駅はありません。
あるのは、「(けいせい}にしふな」駅です。(^^)ゞ
投稿情報: 悪児 | 2007年7 月25日 (水曜日) 午後 10時29分
悪児さん、早速の返信有り難うございます。
エラー対策だったのですか。☆☆(゜-゜)ウンッ☆☆
>京成には、「にしふなばし」駅はありません。
ありゃ*^_^*
>1文字の駅名って、あると思います?
「津」なんてのが・・・。
投稿情報: くまぷー | 2007年7 月25日 (水曜日) 午後 10時41分