hirax.net::Keywords::「エクセル」のブログ



2009-07-25[n年前へ]

エクセルにおける循環参照時の計算順序 

 表計算ソフトのエクセルを使えるようになりたいと考えた。そこで、(これまで近づかないようにしていた)エクセルを使ってみることにした。まずは、エクセルの計算順序について調べてみた。もう少し具体的に書くと、計算の順番が「セル配置」に依存するのはどのような場合かを調べてみた。

 まず、最初にわかったのは「循環参照がない場合」には、(各セルの)計算順序は「セル配置」に依存しないということである(エクセルの計算プロセスの詳細)。また、「手動計算」や「反復計算」を行うようなオプション設定にしていたとしても、循環参照さえなければ(各セルの)計算順序は「セル配置」に依存しなかった。

 その一方で、循環参照があると、(各セルの)計算順序は「セル配置」に依存するようになる。具体的には、左上から横1行を計算したあと、その下の1行を計算し、さらにその下の1行を計算する…という具合である。

 だから、「反復計算」を1回だけ「手動計算」で行うような設定にし、
B1に2
A1に=B2
C1も=B2
B2は=B1
B1にA1-C1
という風に入力し、F9を押して手動計算させると、次々と値が変わり、6回周期の動きを示す。しかもA1とC1はいつも同じ値だが、その差分をとっているはずのB1は、ゼロになる瞬間もあるが、2とか-2とかゼロでない値にもなる。

 これは、循環参照が行われている場合に、反復計算オプションを付けた際の「各セルの計算順序」が前述のようだからである。当たり前の話のようだが、少し面白い。

2009-07-26[n年前へ]

シリアルポートで受信した内容を最前面アプリにキー送信するRubyスクリプト 

 10年以上前、自分の勉強がてら、シリアル・ポートで受信した内容をエクセルに貼り付けるプログラムをC++で作りました。確か、Windows 98が出た頃で、Windows 2000が出る前だったと思います。

 今日、久しぶりに、Windowsでシリアル・ポートで受信した内容をエクセルに貼り付けるプログラムを作り直したくなりました。そこで、Rubyで「シリアル・ポートで受信した内容を最前面アプリにキー送信するスクリプト」を書いてみました。

 といっても、スレッドを使いシリアル・ポート送受信を行うRubyのクラス"ComThread"は、少し前に書いています。また、Windowsの(キー操作やマウス操作などを扱う)各種APIを使うためのRubyクラス"Win32GuiTest"も、同じように書いてあります。

 ということは、その2つを使うと、こんな風に「シリアル・ポートで受信した内容を最前面アプリにキー送信するRubyスクリプト」を簡単に書くことができます。

require 'comThread'
require 'win32GuiTest'
  
class SendKeyComThread < ComThread
  def receive(data)
    @gui=Win32GuiTest.new
    @gui.sendKeys data.strip+"{ENTER}"
  end
end

skCom=SendKeyComThread.new(1,
        Queue.new,nil,0x1807, 9600) 
skCom.start(:receive=>true)
sleep 60
skCom.stop
 これだけで?という感じですが、これだけです。このスクリプトを走らせれば、COM1に(9600bpsで)受信した内容を最前面ウィンドーに送信することが(60秒間)できます。

 このサンプル・ソースと必要なファイルは、ここに置きました(wincom.rbも必要です)。

 計測器等を使う人であれば、この手のスクリプトは結構便利に感じるのではないでしょうか?こうしたスクリプトを書き、自分が使っている計測器や機器の送出コマンドに合わせたデータ加工正規表現を書き、"receive"メソッドをオーバーライドするのがシェフのお勧めメニューになります。もちろん、RubyScript2exeで、アプリケーション化しておけば、さらに便利だと思います。

2009-08-03[n年前へ]

エクセル2007で綺麗なグラフ動画を作る 

 Microsoft Excel 2007 を使うと、割に綺麗な色のグラフ(チャート)を作ることができる。少しカスタマイズすれば、こんな具合に科学技術プレゼン用のグラフができあがる。

 綺麗なグラフを簡単に作ることができるのなら、今度はその綺麗なグラフを動画で眺める「綺麗なグラフ動画(チャート)」を作ってみたくなった。そこで、まずは、次のようなRubyスクリプトで「グラフ(チャート)を回転させたようすを写した連番JPEG静止画像群」を作ってみた。

excel=WIN32OLE.new("excel.application")
・・・
excelchart=excel.Charts.Add()
・・・
i=1000
0.step(359,3) do |rot|
  excelchart.rotation=rot  
  excelchart.Export( 'c:\\images\\'+i.to_s+'.jpg', 'JPG');
  sleep(0.05)
  i+=1
end

 そして、JPG to AVIを使い、JPEG画像群をAVI動画ファイルに変換した。それが、下の動画である。ひと昔前、いや、ふた昔前なら高価な専用ソフトが生成するような動画を簡単に作ることができることを意識すると、少し不思議な気分になる。

2009-08-04[n年前へ]

エクセル2007で綺麗なグラフ動画を作る 円グラフ編 

 「エクセル2007で綺麗なグラフ動画を作る」の続きとして、今日はMicrosoft Office Excel 2007 で「円グラフ」の動画を作り・眺めてみました。

 円グラフを回転させると、てっきり「コインを立てて回転させたような感じ」のグラフになるかと思いきや、レコード盤が回転するような具合で(レコード盤が回転するようにでは理解しにくい世代には、CDやDVDが回転するようになら伝わるでしょうか)グラフが回ったのが意外に感じられました。

 円グラフの回転方向は意外でしたが、それはそれで面白いように思われます。たとえば、「懸賞」や「くじ」などをする際に、その懸賞のようすをアニメーションで表現するような「動画の素材」としても面白く使えそうな気がします。こんなエクセル2007で綺麗なグラフ動画を作る」の続きとして、今日はMicrosoft Office Excel 2007で作った円グラフ動画を眺めれば、人それぞれ「色んなアイデア・活用法」が浮かんでくるのではないでしょうか。

2009-08-05[n年前へ]

エクセル2007で綺麗なグラフ動画を作る テクスチャマッピング円グラフ編 

エクセル2007で綺麗なグラフ動画を作る 円グラフ編」をしたなら、次はこんなことをしたくなります。エクセルを使うときには、特に円グラフを使うときには、グラフの各要素にテクシャマッピングをすることが多いです。そこで、テクスチャマッピング付き円グラフ動画を作ってみることにしました。それが、下の動画です。

 今回は、グラフのサイズ・縦横比の調整をしなかったため、変な動きの動画になってしまいました。しかし、「テクスチャマッピング付きの円グラフ」自体はとても綺麗に思われます。というわけで、もう一度グラフが変な動きをしないようにスクリプトの修正をした上で、もう一度テクスチャマッピング付き円グラフ動画作成に挑戦してみようと思います。

エクセル2007で綺麗なグラフ動画を作る テクスチャマッピング円グラフ編








■Powered by yagm.net