【´・ω・`】:ブログのコメントにも書いたことだが、三四郎でやると
「腕試し」の問題でもなかなか、すっきりと解けない。
ある意味、三四郎のほうがエクセルより楽しませて
くれた。「腕試し」の問題はこちらを参照。「腕自慢」の
問題はこちらを参照。
(使用ソフト 三四郎2005)
*
*
★腕試しA
これは瞬殺。「割引価格は、1円単位を切り捨て、10円単位とします。」ということなので、Rounddownを使い、第2引数を-1にすればよい。
Ex2008_San_UdedameshiA.lzhをダウンロード
★腕試しB
エクセルであれば、CountIfを使って何事もなく解けるのだが、
三四郎のCountExactは文字列に対してしか使えない。
従って、作業列を使わないで解くには、データベース関数を
つかうか、SearchとCountの複合技で攻めることになる・・・
Ex2008_San_UdedameshiB.lzhをダウンロード
★腕試しC
これもエクセルであればSumIfを使って一発なのだが
残念ながら、三四郎にはSumIfにあたる関数がない。
すっきりとした式にならなかった・・・(-_-;)
Ex2008_San_UdedameshiC.lzhをダウンロード
★腕自慢Q1
この問題に関してはExcelにはない三四郎特有の荒技を
使っている。下は「合計金額」を出す式だ。
=Index(G6:G9,1,Code(C5)-64)+If(C6>+F12,25,30)*C6
赤字の部分に着目して欲しい。C6には名刺の枚数、F12には
文字列「50枚まで」が入力されている。つまり、C6>+F12は
数値と文字列の大小を比較しているのだ。Excelではこんなことは
できないけれど、三四郎では文字列が数値で始まっている場合
その数値だけを取り出してくれるのだ。恐るべし、三四郎!!
Ex2008_San_UdejimanQ1.lzhをダウンロード
★腕自慢Q2
腕自慢Q1では三四郎がExcelを凌いでいたが、腕自慢Q2では
三四郎の弱点がでてしまった。三四郎にはExcelのMatch関数に
あたる関数がない(と思う)。それに配列数式もサポートしていない。
(ま、配列数式は実用上はなくても全く困らないが・・・)
三四郎でExcelと同等のものを作るにはかなりの忍耐?が
いるだろう・・・我はと思わん勇者は是非三四郎を使って
重複氏名対応の作品を仕上げていただきたい。(→きっちーさん&
悪児さん (^o^))
ちなみにくまぷーのは重複氏名には対応していない( ̄^ ̄)
偉そうに言うことではない バキッ!!(-_-)=○()゜O゜)アウッ!
Ex2008_San_UdejimanQ2.lzhをダウンロード
★腕自慢Q3
ここでもQ1同様、三四郎の得意技、数値と文字列の直接比較を
使って月刊誌の発売日をチェックしている。繰り返すが
三四郎では・・・A1に30円、B1に50枚、C1に数式=A1*B1なんて
するとC1にちゃんと1500と表示されるのだ。(゜◇゜)ガーン
・・・ところで全くの憶測だが、この荒技を実装するために
CountExactで数値を扱うことを犠牲にしたのかもしれない。
Ex2008_San_UdejimanQ3.lzhをダウンロード
三四郎2008では、やっとCountIfと
SumIfを実装するらしい。
今更、と言う気がしないではないが、何代も前から
ずーっとJustSystemから放置されて
バージョンがあがっても、変わったのは
名前だけ・・・という三四郎に光明が
見えたことには間違いがない・・・
おいらは今2005を使っているが
密かに2008にバージョンアップしようと
もくろんでいる・・・
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 05時31分
>三四郎では文字列が数値で始まっている場合
> その数値だけを取り出してくれるのだ。恐るべし、三四郎!!
やってみた・・ほんとだぁ
感心しました。
四則演算のほかModまでは試しましたが、
ほかの演算子でも同様なのだろうか?
計算の幅がひろがりますねー
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 08時38分
>感心しました。
・・・でね・・・
三四郎には配列数式もない・・・
三四郎はアンドゥー1回・・・
三四郎には条件付き書式がない・・・
三四郎にはSumIfsがない・・・
三四郎にはCountIfsがない・・・
三四郎には・・・・がない
・・・とけっこうナイナイづくしなんですけど・・・
三四郎にはエクセルにはない・・・
三四郎には1・2・3にはない・・・
三四郎にはCalcにはない・・・
スゴイモノがあるんです・・・・・・・・
それは・・・
知りたい?
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 08時47分
>知りたい?
なんだろう?
うーん、分かんないなー
ご教示よろしくお願いしま~す。
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 08時55分
では、ちょっともったいぶって・・・
指示に従って操作してください。
まず、エクセルね。
A1=16.4-15.4
B1=IF(A1=1,"左のセルは1です","左のセルは1ではありません")
と入力してください。
どうなりますか?
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 09時09分
エクセルの表示結果です。
a1=1
b1=左のセルは1ではありません
ですねぇ
エクセルの演算誤差かなぁ
ここまでやりましたよ~
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 09時15分
>エクセルの演算誤差かなぁ
そのとおりでございます(^o^)
では、こんどは三四郎で・・・
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 09時18分
三四郎でも一緒のようですが・・・
a1=1
b1=左のセルは1ではありません
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 09時25分
ところが!!
A1=16.4-15.4
・・・の
=と16.4の間にカーソルを
合わせてF11を押すとあーら不思議!!
=&n16.4-15.4
・・・となって
三四郎の数値38桁精度の計算機能がONになる!!(^o^)
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 09時34分
どれどれ・・・
「=」と「16.4」の間にカーソルを持っていってっと・・・
F11キーをエイと押してみたぞ・・・
式が「=&n16.4-15.4」に変わった・・
オーなんといわれたとおり精度が上がったのかb1セルが
「左のセルは1です」に変わった~
エクセル君に勝ったぞと三四郎君の鼻が高くなっているような気がするなぁ~
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 09時48分
へへへ、ということです。
エクセルの計算精度は確か15桁ですよね?
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 09時51分
>エクセルの計算精度は確か15桁ですよね?
でしたっけ?
そこまで
覚えていません・・・
投稿情報: minmax | 2008年1 月19日 (土曜日) 午後 10時01分
今、確認しました。
15桁です。
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 10時07分
>左のセルは1ではありません
いわゆる machine epsilon = 2^-52
表記では10進で15桁となっていますが、正確には2進52桁です。
2進桁の値を足す(この場合2、誤差が2進2桁のため)と誤差が回収されます。
「=&n16.4-15.4」は10進演算であって、演算桁数が増えたから正確になったと言う表現ではないですよ。(^^)
投稿情報: きっちー | 2008年1 月19日 (土曜日) 午後 10時42分
あ、きっちーさんだ!!
お久しぶり~
>「=&n16.4-15.4」は10進演算であって
そうですね。ヘルプにそうありますね~(^o^)
投稿情報: くまぷー | 2008年1 月19日 (土曜日) 午後 10時47分