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



2012-04-15[n年前へ]

例外補足で演算子をオーバーロードするエクセルHack! 

 エクセル(表計算ソフト)の「表空間と値の拡張」を考える!?の続き、エクセルで「複素数」をセルに入力し、"=A+B"といった”普通の記述の”入力で複素数演算を実現させる、という「Excelの独自型」…まず、その実装方法が面白いです。

①複素数セルA1、A2に対し、=A1+A2のように入力
②#VALUE!エラーが出るので、それを検出(Workbook_Changeを利用)
③検出したセルに対し、入力数式を複素数演算用関数を用いた数式に変換(ここは、数式を解析して汎用に変換する機能が必要ですが、これはたぶんできる)
④変換後の専用関数による数式で計算し、そのまま値を返す

 この方針を眺めると、 ”エラーを検出し、エラーの元になった文字列をもとに、拡張処理を実行させる”という実装方法が、"No method"例外を補足し、”見つからない”関数名を元にSQLパターン等を生成し、その関数名で「したいこと」を実現するというRuby on Rails のコードを連想します。

 例外補足で演算子をオーバーロードする、という面白く・楽しいエクセル Hackです。

2012-04-16[n年前へ]

エクセルで2次方程式の「解の配置」を図示してみる!? 

 (たとえば)2次方程式、つまりx^2+bx+c==0という方程式の実数解を、中学生か高校生の頃、グラフにしてよく眺めたような気がします。しかし、それらの方程式がいつも1個か2個の解を持つにも関わらず、グラフにして眺めるのは「(時にはゼロ個の)実数解」だったような気がします。

 そこで、今日は「複素数係数を持つ2次方程式の(複素数)解を”可視化する”エクセルシートを作ってみました(ダウンロード先)。"b"と"c"という2つの複素数を入力すると、(ある程度の範囲の)任意の複素数を"x"とした上で"x^2+bx+c"を計算し、その計算結果がゼロ近くになる部分(どんな複素数値を”x”に代入すれば"x^2+bx+c"という式がゼロになるか)を複素平面上で”可視化”する、というエクセルシートです。

 実数(あるいは時に複素数の)係数b,cを持つ2次方程式の、それら係数b,cを自由自在に動かしてみた時の2次方程式の2つの解(の配置や動き方)を眺めてみると、何だかとても面白いものです。たとえば、実数係数の2次方程式を作った時には、実数軸に線対称な2つの共役数が解になったり、複素数係数を入れてみると…何だか綺麗な対応が見えてきたり…と不思議に魅力的な世界が見えてくるのです。

 明日は、「係数」をドラッグ&ドロップで動かすと、「解」がどんな風に・どんな配置で動き回るかでも眺めてみよう(眺められるソフトでも作ってみよう)と思います。

エクセルで2次方程式の「任意の解」を図示してみる!?






2012-06-22[n年前へ]

続々々 エクセルのワークシートをC++言語プログラムに変換してみよう! 

 エクセルで(反復計算を用いた)循環参照が行われている計算シートと同じ計算を、C++言語で行うためのC++ソースコードを自動生成するRubyスクリプトを少しだけ更新してみました(github)。

 追加したのは、計算した結果を表示する機能と、無駄な数値代入計算をさせないようにしたという部分です。

 使い方は、とっても簡単。たとえば、

ruby xls2cpp.rb sample.xls > sample.cpp
という風にしてXLSファイルからC++ソースコードを生成し(参考:githubのsample.cppなど)、後は、
cl /EHsc /Ox sample.cpp
とでもし…つまり最適化をバッチリかけてやったならば、計算がバッチリ速くなるかも!?しれません。(エクセルの方が最適化されていて速かったり…とかいうこともありそうですが)

  というわけで、エクセルで(たとえば偏微分方程式を離散化して解く)コードをチョチョイと感覚的にプロトタイピングした上で、後はC++コードに変換し・最適化をかけまくる…という、「エクセルプロトタイピング+最適化C++コード自動生成」シミュレーションをしてみるのはいかがでしょう?

2012-11-20[n年前へ]

エクセルで作った3D視点ジェットコースター・ゲーム 

 「エクセルで作った3D視点ジェットコースター・ゲーム」 (Excel Unusual)がとてもスゴくて面白いです。Excel2003以降対応のエクセルシート(XLS)をダウンロードして、"GO!"ボタンを押すと、ジェットコースターが走り出し、そのジェットコースターに乗っている気分を三次元視点で味わうことができます。(Excel 2011 for Macでも動作しました)

 このエクセルシートはVBAも使っていますが、そのコードはとても短いものです。シートとコードを眺めて、「あぁ、こういう風に作ったのか!」と感心するのも面白いかもしれません。

2013-03-18[n年前へ]

Excel 2013で描いた「おっぱい曲面 2013」 

 去年の今頃、Excel 2010(Windows版)を使い、「エクセル・グラフを綺麗な配色にするアプリでおっぱい曲面を描いてみる!?」と遊んでみましたが、今日は、出荷されたばかりのExcel 2013(Windows版)で同じ「おっぱい曲面 2013」を描いてみました。

 Excelが標準に使う色は(互換性などの理由もあり)「何だかイマイチな色使い」ですが、半透明にしたり・色を滑らかに心地良い色にしたりすると…Excelだって「とても魅惑的なグラフ」を描き出すことができます。

 もちろん、それはExcelが頑張っているだけでなく、この曲面自体の魅力が大きいようにも思います。…というわけで、今日はExcel 2013で「おっぱい曲面 2013」を描いてみました。

Excel 2013で描いた「おっぱい曲面 2013」








■Powered by yagm.net