問題はこちらを参照。
今回は悪児さんの出題でした。
くまぷーも悪児さんの回答を楽しみにしています。
【解答手順】
1.A1に =String(Rank(D1,D$1:D$11)) と入力。
A11までコピペ。
2.D1に =C1+0.0001*Row(A1) と入力。
D11までコピペ。
3.E1に =VLookup(String(Row(C1)),$A$1:$C$12,Col(B1)) と入力。
F11までコピペ。
【解答手順・番外エクセル編】
1.D1に =C1+ROW()*0.0001 と入力。D11までコピペ。
2.E1に =INDEX(B$1:B$11,MATCH(LARGE($D$1:$D$11,ROW()),$D$1:$D$11,0))
F11までコピペ。
三四郎の場合は、
作業セル1列だけ、
で作りました。
作業セル無しのExcel版と共に、
パスワードを付けて
ここに置いておきます。↓
http://members2.jcom.home.ne.jp/r_watanabe/tmp/Auto_sorting.zip
他の皆さんの挑戦をお待ちしています。(^_^)(^_^)/~
投稿情報: 悪児 | 2007年7 月22日 (日曜日) 午前 09時02分
解答と言うよりも、つめていくと標準解答とそっくりになってきた。
D1に =Rank(C1,C$1:C$11)+Row(C1)*0.01
E1に =Index(B$1:B$11,1,Fp(Small($D$1:$D$11,Row($D1)))*100)
小数点以下が行番号であることがわかれば、演算で取り出せる。
1セルでの解答は見つけられなかった。
くまぷーさんの解答で、同点の順序が降順になってるのはご愛敬?(^^)
A1に =String(Rank(C1,C$1:C$11)+Count(Search("=" & C1,C$1:C1))-1)
E1に =VLookup(String(Row(C1)),$A$1:$C$12,Col(B1))
として、D列を空白にしてもいいのではないかな。
でも、提案者と、出題者しか見えない中で解答するのはきついよん。(TT;;;)
投稿情報: きっちー | 2007年7 月23日 (月曜日) 午前 03時40分
>小数点以下が行番号であることがわかれば、演算で取り出せる。
さすがは、きっちーさん。
この部分が「ミソ」でしょうか。
重み付けと行番号付与の二役ですね。
悪児もこの点は全く同じでした。(^^)(^^)
Fpは、全然使わないですね。
ついつい、Mod演算子ですませてしまいます。(^^)ゞ
>1セルでの解答は見つけられなかった。
やっぱり、三四郎では、無理でしょうね。
>くまぷーさんの解答で、同点の順序が降順になってるのはご愛敬?(^^)
悪児も、くまぷーさんと同じで、
ちょっと気にはなったのですが、
同点の場合は順不同、ってことで、
それ以上考えませんでした。
まぁ、得点を、満点マイナス得点にして、
Largeをsmallにすれば、できそうですが。(^^;)(^^;)
>でも、提案者と、出題者しか見えない中で解答するのはきついよん。(TT;;;)
ありがとうございます。(^_^)(^_^)/~
投稿情報: 悪児 | 2007年7 月23日 (月曜日) 午後 12時41分
>小数点以下が行番号であることがわかれば、演算で取り出せる。
なるほど、言われてみれば
その通り!!φ(・_・)メモメモ
勉強になりました。
>>くまぷーさんの解答で、同点の順序が降順になってるのはご愛敬?(^^)
悪児さんのJPGの画像が
そうなっていたので、ま、いいかと・・・(^^ゞ
投稿情報: くまぷー | 2007年7 月23日 (月曜日) 午後 06時49分
問題画像の一太郎と十太郎、くまぷーさん解答の一太郎と十太郎の順が違ったので、どっちかと言えば名簿順がいいかなと思ったのでした。(^^)
投稿情報: きっちー | 2007年7 月23日 (月曜日) 午後 11時18分
悪児の解答です。
三四郎版
D1に
=C1+Row(D1)*0.0001
D10まで、下コピー
E1に、
=Index($B$1:$C$10,Col(A1),Large($D$1:$D$10,Row(A1)) MOD 1*10000)
E1:F10にコピペ
なお、同点の場合名簿順にするなら、
D1に
=100-C1+Row(D1)*0.0001
D10まで、下コピー
E1に、
=Index($B$1:$C$10,Col(A1),Small($D$1:$D$10,Row(A1)) MOD 1*10000)
E1:F10にコピペ
Excel版
作業セル使用
D1に、
=C1+ROW(D1)*0.0001
D10まで、下コピー
E1に、
=INDEX($B$1:$C$10,MOD(LARGE(($D$1:$D$10),ROW(A1)),1)*10000,COLUMN(A1))
E1:F10にコピペ
作業セル無し
E1に
=INDEX($B$1:$C$10,MOD((LARGE(($C$1:$C$10+(ROW($E$1:$E$10)*0.0001)),ROW(A1))),1)*10000,COLUMN(A1))
&Ctrl+Shift+Enter
E1:F10にコピペ
作業セル無し、作ってみましたが、
実際に実務で使用するとなると、
上の作業セル使用の方を使いますね。
なお、同点の場合名簿順にするのであれば、
D1に、
=100-C1+ROW(D1)*0.0001
D10まで、下コピー
E1に、
=INDEX($B$1:$C$10,MOD(SMALL(($D$1:$D$10),ROW(A1)),1)*10000,COLUMN(A1))
E1:F10にコピペ
作業セル無しも同様に100-を追加し、
LARGEをSMALLにすれば、OKですね。(^^)(^^)
他の解答を思いついた方、
どうぞ、紹介して下さい。(^_^)(^_^)/~
なお、先日アップしておいた解答のパスワードは、
「ATS」でした。ご確認ください。m(_ _)m
投稿情報: 悪児 | 2007年7 月24日 (火曜日) 午前 03時12分
悪児さん、お早うございます。
解答のアップ、有り難うございます。
表計算で遊ぶのって本当に面白いですね。
こんどの出題はくまぷーの番です。
目には目を!!ソートにはソートを!!
ソート問題第2弾です。
楽しみにしていてくださいd(^-^)ネ!
投稿情報: くまぷー | 2007年7 月24日 (火曜日) 午前 05時21分