昨日のボランティア

何気なく疲れていていつの間にか寝ていて、起きたのこの時間か・・・。15時間くらい寝たのかな?ボランティア先では全然疲れるようなことはしていないのになぁ。
ついこの間職員として採用された人が、ここの職場はなんか職場じゃないみたいといっていたくらいぬるいのに。
でも、Excelの使い方で少し悩んだり。いや、データ打つだけなら良いのだけれど、今後のことを考えて汎用性を持たせようとすると、参照とかを上手に使わなければならないのに、なんかうまくいかないし。具体的には、元のシートのデータとしては1行のものを、印刷用のシートでは2行に参照させる感じで、1行→2行という感じのデータの参照を延々とやりたいのだけれど、当然2行のシートの方でも普通に上の2行のセルをコピペしただけでは参照元が2行下になってしまうし(元データのシートの方では1行ごとにデータが入っているので、参照元は1行下になって欲しい)。こんな初歩的なことでつまっている自分が悲しい。理系でこんな事で悩む?A1形式やめてR1C1形式でなんとか出来ないかなぁ・・・。と愚考してみたり。まだそんな最中です。



23:00追記
=IF(INDIRECT(ADDRESS(TRUNC(ROW()/2)+1,1,,,"sheet1"))="","",INDIRECT(ADDRESS(TRUNC(ROW()/2)+1,1,,,"sheet1")))
上記の問題は、こんな感じの式で出来ることが分かった。TRUNC(ROW()/2)+1で取得した値をどうやったら参照に反映できるかで悩んでいたのだけれど。ADDRESS関数を教えてくれた姉に感謝!(その部分さえ分かれば、ADDRESSで取得した文字列のセル参照への反映は、INDIRECTを使えばいいことはすぐ分かった。)こんな簡単なことでも、今までやったことがないと、難しいものだねぇ・・・。馬鹿丸出し。

2006/06/04追記
その後、どう考えてもこういう場合にはINDIRECT(ADDRESS())よりもINDEX()使った方がいいな、ということが判明。
詳しくは↓
http://d.hatena.ne.jp/walter/20060604#1149371223


2006/04/20追記
上のTRUNCはすべてINTで置き換えられますね(この場合はどちらにしろ正の整数にするだけの話ですし)。なんかINTの方がExcelの解説書見てみると基本っぽいかも。うう、ベーマガとか読んでいた世代ですし、低レベルですが、一応BASICでプログラミングもしていたのに・・・。英単語的にパッと浮かんだのがintegerよりもtruncateだったんですよね・・・。でも、今の言語ではtruncateが切り捨ての関数のものも多いみたいだから、むしろ時流に乗っているのかな?曲がりなりにも知っている言語がBASICとFORTRANだけの自分には、本来切り捨て関数は真っ先にINTが浮かぶのが自然なはずですが。もう年食い過ぎかも。ちなみにC言語は全く知らないので行頭でよく見るintって何?って感じです(FORTRANでINTEGERって変数の宣言するようなものなのかな?さっぱり)。