忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[1252] [1251] [1250] [1249] [1248] [1247] [1246] [1245] [1244] [1243] [1242]
エクセルを使ってアニメーションを作る方法はいくつかある。



エクセルでアニメーションなんか作らない・・・?
・・・まあ、暇なら聞いてってけれや・・・><


忙しい人のために結論からぶっちゃけると、

=10000*(now()-rounddown(now(),4))をシリアル値から数値に切り替えて表現

で通じればそれまでなんだが
何を言ってるかわからないと思うのでいちおう説明しておく。



1つはgoogleのCMのように、
コマごとにシート(=タブ?=見出し?)を作成して、コマ切り替えで動かす方法
あれの発案者は、ほかならぬ俺だ。
・・・間接的だけど、ずっとさかのぼっていったら俺に当たるんだよ・・・
オートシェイプをシートごとに流用・微調整して作っていくのに向いてるな



もう1つは、関数を使う方法。

そうだな、試しにA1セルに「1」って入力して
A2セルに「=RAND()」(引数なし)って入力してみろ。
それで、A1とA2を選択したまま、棒グラフでも作ってみろ。
作ったら、どっか適当な空白セルを選択したまま、del(デリート)キーを押しっぱなしにしろ。

そしたら右の棒グラフだけの高さがランダムに変わるだろ。

つまりだ、rand関数っていうのがランダムな数を次々と出す関数で
空白セル内でdelキーを押すと、何もしないんだけど再計算だけはされて
その再計算のたびにランダム関数から出た数値が変化するから
それを随時参照してるグラフの高さもランダムに変わるわけ。



でもこれだと、delキー押しっぱなしで動かせるものはランダムに限られてしまう。
なんとか、自分の意のままに動かすことはできないか。


そこで使うのがnow関数だ。
文字通り「今」の日付と時刻を出してくれる。
B2セルに「=now()」って入力してみろ。(引数なし、戻り値の表示形式が自動的にシリアル値になる)

2011/5/22 13:25

みたいに、今日の日付、半角スペースのあとに現在時刻が「時:分」の形で現れるはずだ。

今は分までの表示しかないが、秒の表示まで可能だ。
B2セルの上で右クリックしてみろ。何か出てきたはずだ。(メニュー)
そこで、下から6番目くらいに「セルの書式設定」ってのが現れるはずだからクリック。

そしたら小さい窓(ダイアログ)が現れて、窓の上のほうには本のしおりみたいの(タブ)が6つくらいあって、その一番左の「表示設定」が手前に来ているかな?
きてなかったら「表示設定」をクリックして手前に出してくれ。

そうしたら左の枠の「分類」で「時刻」をクリック。
そうすると、その右側の枠内の「種類」も変わって、一番上の「時間:分:秒」の形になっていることを確認して、「OK」を押す。

そうすると、B2の表示に「秒」が追加されたはずだ。

13:25:22

こんなかんじ



じゃあそこでもう一度、適当な空白セルを選択したままdelキーを押しっぱなしにしてみるんだ。

「今」の時刻も、再計算のたびに変化していることがわかる。


ってことは、この「今」の情報を頼りに、関数を使ってアニメーションを作ることができるはずだ。
「今」の情報は一定のスピードで増えていってくれるから扱いやすい。



さあこいつをどう処理しよう?

日付や時刻の表示は「シリアル値」と呼ばれるものだ。
あくまでセルの表示方法の1タイプでしかない
3桁ごとにカンマで区切ったり、¥を頭につける表現と同じようなもので
その中身は文字ではなく数値そのものなんだよ。
表示形式を変えても数値の中身は変化しない。


じゃあさっきの要領で、B2セルの「表示形式」を「標準」にしてみよう
そうすると

40685.55928

こんなかんじで数万程度の数になる。

これは何かというと、1900年1月1日0時0分0秒から今日までの日数を表している。
1日を1とし、1時間をその24分の1、
1分をさらにその60分の1、1秒をさらにその60分の1という決まりで数値として表現しているんだ。


delキーを押しっぱなしにすると
小数点以下5桁目が1秒おきくらいに変化してるのが見えるだろう


ここで、ツールバーの右のほうにある「小数点表示の桁上げ」ボタンを何度か押してみよう。
(ボタンが見つからなければ「表示形式」の「分類」を「数値」にして「小数点以下の桁数」を「13」とかにしてもいい)
数値がセルをはみ出して「#」がいっぱいに表示されたらB列の右端をつまんで幅を変更してくれ。
(B列右端をダブルクリック→列幅の自動調整でもいい)

だいたい、小数点以下10桁くらいが表示されたその右は全部0になっているはずだ。

40685.5592800925000


そこで、また空白セルでdelキーを押しっぱなしにしてみてほしい。
そうするとどうだろう

実は小数点以下6桁以降の桁は1秒以内でもめまぐるしく変化していることがわかる。

40685.5592800925000

これを使ってヌルヌル動くアニメーションが作れそうではないか!


しかし、このままでは小数点以下5桁以前の桁が邪魔で、ほとんど動いていないように見えてしまうだろう。


実際、A2セルに「=B2」と入力して参照したところで
いくらdelキーを押しっぱなしにしても
棒グラフは左のがほぼゼロ、右のが数万で、全然動いているように見えない。


そこで、「小数点以下5桁目以降を取り出す」ということを行う。

しかしながら、「小数点以下5桁目以降を取り出す」という関数はたぶん用意されていないので、
発想を転換して、まず「小数点以下4桁以前を取り出して」しまおう。
この関数ならあるんだ。

rounddown関数というもので、「小数点以下何桁で切捨て」を行う関数だ。
(引数は2つ。戻り値に出したい数の元の数と、切り捨てる桁数)
B3セルに「=rounddown(B2,4)」と入れてみよう。

40685.5592000000000


これは、B2セルを参照して、その数値の小数点以下4桁で表示できるように切り下げをしている。


そうすると、小数点以下5桁目以降が全部ゼロになっていることが確認できる。

そうしたら、いよいよ小数点以下5桁目以降の数値を取り出す
B4セルに「=B2-B3」を入力し、引き算を計算させて表示するだけだ。

0.0000800925



今度は、B5セルでB4セルを1万倍してみよう。
「=B4*10000」で可能だ。

0.800925



最後に、A2セルの中身を変更して、B5を参照しよう。
「=B5」それだけだ。


そうして空白セルでdelキーを押しっぱなしにすると
棒グラフの右側のやつがニューンと上っているのがわかるだろうか。
(うまく表示されない場合は、縦軸の上限・下限を固定にするといい)


これを使えば、応用しだいで、困った顔から笑顔になったりするグラフを作ることができる。
波紋が広がったり、キューブが回転しているようなグラフを作ることも可能だ。



エクセルをはじめ、
・ワード(文書)
・パワーポイント(プレゼンテーション)
・アクセス(データベース)
など
マイクロソフト社の「オフィス」と呼ばれる製品群には、「マクロ」と呼ばれる、「繰り返し作業を楽にする機能」がついていて
Visual Basic for Applications(VBA)というプログラミング言語などを使って色々な作業を自動化することができる。 らしい・・・(エクセル以外でマクロを使ったことがないのでなんとも・・・)

また、「ユーザー定義関数」という、あらかじめ用意されていない関数を作ることもでき、
ミリ秒を取得する関数を独自に作ることもできるが
(ただしこれにはAPIを引っ張り出してくる記述が必要で、興味本位でやるとPCが壊れるなど、責任が負えないらしい)

個人的には、マクロを使ってプログラミング言語で記述してしまうとバグが見つけにくいので
きのこはなるべくマクロは使いたくないのでーす。^^


IBM5100 IBN5100
ブログランキング・にほんブログ村へ
にほんブログ村

拍手[0回]

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析