hirax.net::Keywords::「Excel」のブログ



2013-04-29[n年前へ]

エクセルのグラフ配色をマトモにするためのツール(OSX 版) 

 Windows版のMicrosoft Excelで「エクセルのグラフ配色をマトモにするためのツール(2013年版)」を作ったら、次はMac OSX 版Excelでも、グラフ配色をマトモ・自由にカスタマイズしてみたくなります。そこで、今日はMac版Microsoft Excelのチャート配色を操作するRubyスクリプトを書いてみました。

 作ったのは、RubyからAppleScriptを経由して、Excelを操作するスクリプトです。そのため、まずは、

sudo gem install rb-appscript
と、(RubyからAppleScriptを使う)rb-appscriptをインストールします。そして、Mac_Ruby_Script.zipをダウンロード・解凍し、その中にある excel_chart_designer_for_osx.rb を引数(順に、値の最小値・最大値・透明度の順番で)次のように呼びます。
ruby excel_chart_designer_for_osx.rb -1 1 0.05 0.5
すると、エクセルのアクティブチャートの配色が自動的に調整されます。たとえば、下に貼り付けたチャートは、左が「実に不自然なエクセルのデフォルト配色のチャート」で、右が上記のスクリプトで配色をマトモにしたエクセルのチャートです。

 作ったスクリプトは、①エクセルに接続し、②エクセルのデフォルト配色パレットを(テンプレートファイルから)読み込んだ上で、③軸操作をし、④調整したい色に一番近いパレット(インデクス)をチャートの各領域に対して設定する、という動作を行います。RubyからAppleScript経由でOfficeのTheme Sheme(テーマ・スキーム)の色を設定することができそうになかったので、とりあえず調整したい色に近いインデックスカラーを選び・塗りつぶす、というようにしてみました。

 Mac OSX で MicrosoftExcel を使っている人がどれだけいるかはわかりませんが、今日はMac OSX 版のMicrosoft Excel のチャート配色をマトモ・自由自在に調整するためのRubyスクリプトを書いてみました。

エクセルのグラフ配色をマトモにするためのツール(OSX 版)エクセルのグラフ配色をマトモにするためのツール(OSX 版)






2013-05-28[n年前へ]

「道具に使われるな!!道具は使うものだ!!」 

 美文書作りには「方眼紙」シートを使うという記事、Excelでプロトタイピング ―表計算ソフトで共有するデザインコンセプト・設計・アイデアというオライリー本と同じように、適度に規則正しい配置やルールを感じさせるグリッド上に各種素材を配置しようとする状況下では、エクセルのインターフェースが重宝されることが多い(それ以外の代替候補に未だ決め手がない)ような気がします。…なんてことを考えていたら、「Excel方眼紙」への逆風も吹いてます。

 しかし、そんなエクセルという道具に対するケンケンゴーゴー、カンカンガクガクな賛否両論の議論、その双方を吹き飛ばしそうな「セリフ」が島本和彦「新吼えろペン 第1巻」 に繰り広げられていました。 大事なのは、道具をどんな風に使うべきか/べきでないかなんてことではなくて、道具を使うのも・その道具を介して何かを作り出すのも全てオマエ自身だ!!一体何を、今江が作り出すことができるのかが大事なんだぁ!!!という熱い雄叫(おたけ)びです。

わかってない!!いいか!!?
ペンに使われるな!!!
ペンは使うものだ!!!

 ちょっと面白いな…と思うのは、Excelで「美文書」を作ろうとする人もいれば、LaTeXで「美文書」を作りたくなる人もいたりして…時に言い争いをしていたりするけれど、どちらも「道具の使い方」で一喜一憂していたりする…ということです。

 10年くらい前、「Excelは時間泥棒だ!」とミヒャエル・エンデのように強く信じて叫んでいたはずなのに、気づけばエクセルを使って仕事をしていたすることもあったり(エクセルという黒魔術 )…色んなことがあるなぁ、と思わされますね。

B:ところで、エクセルで計算してないか、これ?
A:…あ、あぁ。
B:確か、大のエクセル嫌いだったよな?いつの間にか、エクセルを使うようになってたのか?
A:…毎年(夏が近づく)この時期は「エクセル(表計算ソフトウェア)で編微分方程式のシミュレーションを学ぶ」という講座運営を手伝っていてな、エクセルの使い方を思い出すために、普段使わないエクセルを使うようにしてるんだよ…。1年に1回しか使わないから、使い方よくわからなかったりするんだけどな…。しかも、使い方覚える前に、すぐバージョンが変わって、インターフェースも驚くくらい丸っきり様変わりしていたりして、大変なんだよ…。
B:(オマエも)変わってないなと思ったが、変わっていたところもあるもんだな。
A:…まぁ、そんなもんかもしれないな。たとえるなら、おっぱいがヤング率次第で変わるところもあれば、変わらないところもある、それと同じってことさ!
B:多様性があって、変わらないところもあれば・変わるところもある。それこそが、粘弾性の「おっぱい」ならぬ人間というものなのかもしれないな。

オッパイ星人の力学 揺れるバストの集団同期 編

2014-05-09[n年前へ]

エクセル(に限らず)表示されてる値は「ホント」の値とイコールだとは限りません!? 

 Microsoft Excelでルックアップテーブル(入力値と出力値の対応表を使い、入力値から出力値を返す機能)を使いハマった方がいました。その状態を再現してみたのが、下に貼り付けた画面です。(画面右にある)「入力値Table(Index)と出力値Table(Value)を対応付ける対応表」を使い、LOOKUP関数およびVLOOKUP関数により、画面左上部にある入力値(Index)から値出力をさせてみたところです。見るとわかるように、入力値(Index)には1.8とタイプされていて、(対応表は入力・出力の組み合わせとして同じ値が入っているので)返ってくるのも1.8かと思いきや、出力されているのは1.7という結果です。・・・一体なぜなのでしょうか? エクセルの「バグ」なのでしょうか?

 これは、浮動小数点演算の結果によるものです。対応表は1に0.1を繰り返し足すことで作ってあるのですが、10進法の0.1は2進法の分数で表現される浮動小数点では正確に表すことができないため、この「対応表に”1.8”と表示されている値」は、本当は1.8とイコールな値ではないのです。だから、エクセルのLOOKUP関数は1.8とイコールな箇所を見つけることができず、1.7を返すわけです。

 ちなみに、エクセルのブックオプション(計算方法)にある「表示桁数で計算する」というオプションにチェックを入れると、こうした現象は(たいていの場合は)出なくなります。なぜかというと、表示している程度に丸められてしまうため、「本当は1.8とイコールな値ではないもの」も1.8に丸められてしまうからです。

 というわけで、エクセル(に限らず)表示されてる値は「ホント」の値とイコールだとは限りません!?というのが、今日の教訓でした。・・・あるいは、単純明快で無いことをエクセルでやってはイケマセンというのが、本当の今日の教訓かもしれません。

エクセル(に限らず)表示されてる値が「ホント」の値と同じとは限りません!?エクセル(に限らず)表示されてる値は「ホント」の値とイコールだとは限りません!?






2014-08-22[n年前へ]

Excelで”-1^2″の計算結果が1で、”0-1^2″は-1になるヒミツ!? 

 Excelで”-1^2″の計算結果が1で、”0-1^2″は-1になるヒミツ!?を書きました。この話題、遙か昔から定番ですが、とても面白いと思います。

 このようなExcelの演算子解釈ルール(優先順位ルール)は、どのようにして生まれたのでしょう?「それは、きっとExcelに先行して発売されていた表計算ソフトのVisicalcやLotus 1-2-3にならったに違いない!」と言われることも多いのですが、残念ながらそうではありません。Visicalcの演算子解釈順は、単純に左から右へと並ぶ”並び順”で解釈されますし、Lotus 1-2-3は…

2017-12-05[n年前へ]

Microsoft Excelで "=-1^2" が "-1"ではなくて"1"になる「理由」 

 Microsoft Excelで "=-1^2" が "-1"ではなくて"1"になるのが「なぜだろう?」というtweetを興味深く読み、そこから辿り着いた20年前のメーリングリスト記事が面白かったので、簡単なメモ書きをしてみます。メモ書きなので、面白い記事へのポインタと(その記事に対する)わずかな感想を書いただけの日記記事です。

 まず、この計算順にまつわる問題を考える時には、" Warning: Excel Performs Negation Before Exponentiation"のタイトルにもなっているように、Excelという一種のプログラミング環境上での、"negation"と"subtraction"という異なる2演算子の計算順序の違いを区別する必要があります。つまり、

=-A1^2
は"=(-A1)^2"と計算されるけれど、
=1-A1^2
は"=1-(A1^2)"と計算されるというように、前者の"negation"と後者の"subtraction"が異なる演算子として区別され・違う演算順序が適用されるという話です。

 次に、20世紀最後の年、つまり西暦2000年1月13日の20:18:46にDoctor Petersonがメールで書いている文面がとても参考になります。それは、"negation"のような単項演算子は”exponent”のような二項演算子に優先して演算されるものだったから、それをただ踏襲すると、こんな計算順序になるよね、というものです。「Lotus 1-2-3との互換性を重視した」わけではないけれど、プログラミング言語の過去経緯を踏まえて考える話だよね、というものです。

 そして何よりも、西暦2005年の12月16日にErikが書いているように、Windowsのメモ帳で "msgbox -2^2"と書いてから、そのファイルをtest.vbsという名前で保存して、もしもダブルクリックしたならば、(マイナス4ではなくて)"4"という答えが書かれたメッセージボックスを私たちは目にするよね。この例でもわかるように、エクセルの「ダメな話」として眺めるのではなくて、コンピューター科学の「興味深い話」として眺めるべき話じゃないか?というコメントが、とても参考になると思います。

So I think this isn't bad math on Excel's part, but good computer science.



■Powered by yagm.net