ブログを始めてみたけれど・・・

ただのオッサンのひとり言が多いです

脱初級者への道

いつの間にか、日経PC21誌「表計算大会」の優秀作品賞等の発表日になった。

あまり期待していなかったが、やっぱり今年もダメだった。

腕自慢問題はとても賞をもらえるような出来ではなかったので諦めていたが、マクロ問題も玉砕。マクロ問題で受賞した作品を見ると、シンプルで分かりやすく、無駄なコードがほとんど無い。

その点私のは、出題のカンタンな要求に対してゴチャゴチャと書いていて、「このコードは必要?」「なんでわざわざ別のプロシージャに切り出しているの?」という部分が多く、見るからに分かりづらい。センス無いのかなぁ?

それでも、テストの方法によってはエラーとなる解答も幸い正解と判定されたようで、腕自慢問題を含め全ての問題に正解者として名前は表示されていました。

なんだかんだ言ってもウッカリさえしなければ、正解は導き出せるようになったようだし、かと言って賞をもらえるような作品も作れないので、もう応募するの止めようかな。やり始めるとけっこう時間かかるんだよね。


などとどうでもいいことを書いていたら、ここまで好投していたダルビッシュがズレータに満塁ホームランを打たれて同点(六回終了4対4)に・・・。ズレータが「ぱなまうんがぁ〜」と叫んでいる。

頑張れダル!

前のデザインは臨時のもので、そろそろ変えるかと思い昨日変えたのだがやっぱり記事部分の字が小さく、とても読む気にはならない。私でさえ読む気にならないのだから、たまたま訪れた人は即座に移動してしまうだろう。

と言うことで、ついにデザインのカスタマイズに挑戦してみた。まずは記事の文字
サイズの変更。

CSSファイルを見てもアルファベットばかりで戸惑うのだが、見当をつけてサイズを変えよう・・・と思ったが、それはあまりにも無謀(設定値もx-smallとか訳のわからん値で、どんな設定値があるのか分からない)なので、調べたらネット上に変更の方法がありました。

で、記事以外の日付や記事タイトルもサイズを変更していくらか読みやすくなりました(内容はともかく)。更に背景の色なんかも変えてとりあえず一段落。

CSSにはいろんな部分で色の設定がしてあって、一個所変えると他の部分とのバランスが悪くなりあっちこっち色を変えてしまった(それによってバランスが取れているとは言わないが)。

正直に言うと色なんかはプロがデザインしたままのほうがいいに決まっているのだが、野望としてタイトルバックの画像を自作のものに変えたいということで、前準備として色を設定した。もうその自作画像もだいだい出来ているので、それに合うようにしたということ。

まぁ、変更して納得できるようなデザインにならなければまた元に戻せばいいし、「デザインの変更なんて気軽に出来るよ」ということで、デザインのカスタマイズに躊躇している人に報告しておく。

そうそう、元に戻すと言っても元のデザインを選択しなおすのでなく、変更前の値を残して、ダメならその値に戻すということ。
    background-color:#990033;
を変更する場合、
    background-color:#330099;       /*元の値 #990033;*/
などとして、消さないで残しておけばここを書き換えるだけでいいでしょ(/* と */ の間の文は無視されるから残しておいても大丈夫)。



今回のデザインの変更いかがでしょうか?まだ完成してないけど・・・







2週間ほど前から友人に頼まれたエクセルのマクロを作っているのだが、変な現象に悩まされている。

雛型のシートをコピーして追加するというものなのだけど、この処理のあとに何故かタスクバーのエクセルアイコンが一つ増えてしまう。

使用上は全く問題のない空のタスクアイコンで、クリックすると無くなってしまうし、友人はそんなこと気づかないだろう。

だけど、なんか腑に落ちないのでそうならない対策はないか調べてみた。持っている参考書にはそれらしい記述は無い。ネットでもそういった質問に答えているのは見つけられなかった。

実は今までにもそうなることがあったのだが、自分で使う分には支障が出るような現象ではないので放っておいた。が、人に渡すファイルとなると「これは何だ?どうしたらいいんだ?」と聞かれても「気にしないで」としか言えないし、更にそのファイルが別の人に渡って「なんだこのマクロは!」なんてことになるのも恥ずかしい。で、いろいろやってみたんだけど、どうしてもアイコンが増えてしまう。

手持ちの参考書に書いていないのはともかく、ネットにもそんな相談や質問が無いのは変だなぁ〜と思った。厳密にどういった処理の時にこうなるのか断定は出来ないのだが、私が何度か目にしているということは、他の人も遭遇している可能性が高いと思われ、そうであれば対策法を知りたい、それに返答するという書き込みがあってもよさそうなものだが・・・

「まさか、私の作るマクロだけの現象か?・・・」と思ってふと気づいた。

そう言えば私の環境はWindows98SEでExcel2000。たしかXPは同じアプリケーションを複数起動した時は、タスクバーにはアイコンが一つしか表示されず右クリックでウィンドウを選択できるようになっていたような・・・

まったく無駄な時間でした。オフクロの使っているXP機で実行したら、冒頭に書いたような現象は起きず右クリックしてもファイルが二つあるなんてことも無い。

やっぱり、いまどきWin98なんてのは問題大有りだな(OSとマクロの問題は別だけど)。XPを使ってりゃこんなことで時間を潰さずに済んだ。が、しかし、VistaはおろかXPへのアップグレードもためらわれるほど貧乏なので、当分こいつを使っていかなけりゃならない。モニターの調子は相変わらずおかしいし、なんとも悲しい話だ。

ブログなんて書いていないで、そろそろ働くか。

最近、厚生労働大臣が女性を「子供を産む機械」と表現したとかで、野党の女性議員を先頭に辞めろ、大臣不適格だと抗議の声が吹き荒れ、そして得意の「任命責任」を持ち出して安倍総理にも攻撃が飛び火している。

どちらにしても不謹慎な例えだったが、「産む機械だ」と決め付けた言い方をしたわけではないのだからそれほど怒らなくてもと思うのですがどうでしょう?野党は内閣を攻撃する材料にするため「女性は子供を産む機械」と言った言ったと世間を煽っている感じで、前後の言葉も聞いたら本当にそんな風に考えているとは思えないんですけどね(私の読解力が不足しているのか?)。

もっと政治の本質として、「そんな考えだから、少子化対策のこの点が足りないんだ」とか「対策が不十分と思うのだが、あなたの考えが反映されているのか」とか政治家として対決して欲しいものです。

しまいには「機械というなら、子供を産まない、産めない女性は欠陥品か!」とそんなこと言っていないのに勝手にエスカレートさせて、もうそういうヒステリックな姿も見苦しいので、柳沢大臣にはとっとと辞任してもらうか、野党は国会の審議に戻ってそこできちんと批判するかしてもらいたい。いつまでもヤッてんなよ!

と、そんなことを思っていた昨日、PC21誌の表計算大会「マクロ問題」に応募した私の作品が欠陥品であることが判明した。

請求書の空白行を表示しないようにする、という問題で、1行づつ空白行かどうか確認して最後に一括非表示処理をする方法にした。

入力範囲でSpecialCellsのTypeをxlCellTypeBlanksで空白セルを取得してEntireRow.Hidden=Trueとすれば一発で非表示にできるのだが、これじゃぁツマランし、行の一部だけ入力があった場合(1行5列のうち4列目だけ入力があるとか)対応できない。

で、入力範囲を一行ずつすべてのセルが空白かどうか調べ、すべて空白であればその行ナンバーを変数に取得し、最後に一括処理するようにした。その都度処理してもよいのだが、それだといちいちObjectを操作することになり多少もたつき感があるので最後にまとめて処理するようにしたのだ。

問題のクリアを考えればSpecialCellsを使えばいいし、処理のもたつきも今の高性能機なら気にするほどではないので、その都度処理してもよかった(私のマシンの性能が低いだけだから)。でも、どうせならと些細なことにこだわってみた。正解にはなるんでねぇ、と割と自信を持って送ったのがつい4日ほど前。

そして先日書いたように友人のエクセル・ファイルを作ってあげることになり、要望が「印刷する時に何も入力の無いところは隠れるようにしてくれ」、という正にマクロ問題と同じものだった。

「ラッキー!応募したやつをチョッと手直しすればすぐできる」と、同じ方法で作った。「これでよし!」。ただ、こちらは他に入力行の追加というのもあり、それに伴って合計式の参照範囲の書き換えなど、そのためのテストを繰り返していた。

テストのために参照範囲すべてにデータを入力して正しく計算されるか確認。

計算はちゃんとされるようだ。当たり前だな、そうなるように作ったんだから。と思いつつ、ワークシートを見てみるとこの状態では非表示にする行が無いことに気づいた。応募作もそうだが、現在の表示状態によってコマンドボタンで全行表示・非表示を切り替えるようにしてある。ので、非表示にする行が無い場合はボタンを押す必要が無いのだが、押す可能性は充分にある。

「あら〜、どうなるんだ?」と思いながら押してみた。

エラーーーーーーーー??
ガ〜〜〜〜〜〜〜ンッ!!

なんという初歩的ミス。非表示処理する行がないと変数の中は空っぽなので、処理対象が見つからずにエラーとなってしまう。当然マクロ問題に応募したものも同様のテストをされたらエラーとなる。空っぽかどうか条件分岐するだけでいいのに・・・誰も見ていないが、その時私は不気味な微笑を浮かべていたと思う。

マクロってテストが大事なのにすっかり忘れていた。応募用のファイルをダウンロードして、データの書き換えなんかほとんどしなかったからな。ま、それ以前にもっと慎重なテストと、エラーを予測する経験が不足していたという事か。

次回(マクロ問題があるかどうかは不明)のためにも、友人のファイルをしっかり作ってあげて経験を積み、本当に初級者脱出と言えるようになりたいです。

とうとうマクロ問題の締め切り日となり、なんとかそれらしい解答を作って送った。

今日の昼頃送ったのだが、なかなか受け付けのメールが届かずやきもきしていた。先ほど確認しても届いていないので「締め切り間際に応募が殺到して処理が追いつかないのかな」なんて思っていたが、今時こんなのをいちいち手作業で返信するはずもなく、おかしいなと思い直し送ったメールを確認してみた。

なんと!件名が指定されたものと違っていて、もしかしたらスパムメール扱いされたのかも?

と言うことで、ことわり書きをつけて再送した。2重応募は禁止されているので、もしかしたら失格扱いになるかもしれないが、その時はその時だ。どっちにしても大したものではないし。

どうなるか分からんが、それにしても慎重さが足りないというか相変わらず間の抜けた話だ。この調子なら受け付けられても思わぬところでエラーが出て、正解にならないかもしれないし、もうどうでもいいや!

わずかな期間だったがVBAを改めて勉強する機会にもなったし、また精進に勤めるよ。

明日でマクロ問題の応募締め切り。

甘く見過ぎていた。設問の課題はクリアできると思うのだが、それに付随して「こういう時に備えて、こうしておきたい」と考え出したら、いろいろとやることがあって・・・

とても満足できる解答になりそうもない。もっと真剣に取り組めばよかったよ。

今から言い訳言ってもしょうがないけど、正解レベルで応募することになりそう。まったくこの一ヶ月は何だったのか?


それより「WindowsVista」が発売されて、都会では深夜に並んでまで手に入れようとする人がいるようだが、本当にそれほど求める人がいるのか?

最早「発売のカウントダウン」がイベント化していて、その商品内容とは別のところに注目がいっているようで甚だ疑問です。ほとんど「サクラ」でないのか?

いつかの投稿で書いたとおりモニターの調子が悪く、修理か買い替えかと悩んだが貧乏なので映らなくなるまで使うことにしたよ。本当に、心の底から貧乏だから。

Vistaと対面する日は何時になるのか(明日デンコードー行ってみっか)?

日経PC21誌の表計算大会、マクロ問題の締め切りも近づいてきた。「レベル7」も読み終えたので、「さ〜て、そろそろ取り掛かるか」と今日は解答作成を試みた。

まず肝腎のワークシートのコピーを作成して、それに名前をつける。

「これでOKだな、それっ!」

エラーーーーー

「えっ?そんはずは・・・」

もう一度やってもやっぱりエラー。「オブジェクトが必要です」とかエラーメッセージが出る。構文を見直してもどこに問題があるか分からない。

で、本を引っ張り出してきて調べてみたら、私の考えていた方法では動かないようだ(方法と言うか、変数の使い方に問題がある)。

「単純な問題」などとほざいていたが、けっこう面倒なのかも。もう日にちが無いのにヤバイなぁ。

今日はけっこうしばれていて、婆ちゃんとこのトイレは凍るし、元太も散歩中足が冷たそうなので早々に引き揚げてきた。それで私の頭も多少働きが鈍いのかもしれない(それはないな)。

ということで、暖かい風呂にでも入って湯船の中で別の方法を考えてみるか。

それにしても余裕ぶっこき過ぎたな。残り3日。解答は無事できるのでしょうか?すっごい不安になってきた。

日経PC21誌の腕自慢問題応募を終え、次はマクロ問題にと思っていたがQ1はできたのに、Q2はさっぱりすすまない。

単純な問題で、元となるワークシートと同じものを追加するだけなのだが、ああしたらいいか、こうしたらいいかと考えてばかりで一向にコードが書けない。いささか体調も悪いのだが、それにしても前ならとりあえずコードを書いて・・・って感じだったのに瞬発力が無くなったのかな?(実はイマひとつやる気が出ない、というのもある)


「あるある・・・」という番組が打ち切りになるようだ。あれだけインチキの放送をしたのだから当然といえば当然だが、信じて納豆を食べつづけた人は哀れだし、増産したメーカーには気の毒なことだ。

納豆で痩せるというのはウソでも、納豆が体にいいのは間違いないし、その分太りそうなおかずを減らしたらダイエットにも多少貢献するのではないか?

それにしても、不二家は消費期限切れの食材を使ってそれによる明確な被害が出ていないにも関わらず、経営を揺るがしかねないほどメディアに叩かれているが、当のメディアは都合の悪い部分を切って御免なさいなんだから、いい気なもんだな。

不二家は消費期限切れの食材による被害者が出ていないといっても、かつて出た健康被害を公表していなかったり、衛生管理体制のお粗末さなど糾弾される点はあるが、それをわざわざ昔の従業員をどこかから見つけてきて、本当にその通りなのか分からない(正確なものか、適正な証言者か)ことを放送したり、創業者一族による独裁経営に問題が、などと言っているが、あんたらもちょっと探ればヤバイ放送がけっこうあるのではないのか。

他のテレビ局は、番組制作に携わった人間を見つけてきて「こんなインチキ番組を作りました」とか「インタビューに台本があった」とか証言を取材してこいよ。出来ないのは分かっているけど。

テレビ局(に限らず)が報道機関として、世の中の問題を指摘、追求するのは分かるが、自分たちこそが正義の代表みたいな感じで徹底的に世間に公表するのに、我が身になるとおざなりの釈明と謝罪で済ませる。それだって他のメディアやスポンサーに対するもので、どこまで視聴者に向かっているのか疑問だ。番組を打ち切ればいいというものではなく、視聴者に対しては、それまでに放送した内容を検証して公表することも大事ではないのか。

私は元々見ていない番組だから無くなってもいいけど、ずっと見ていた視聴者にはそれくらいする責任があるんでないの?

高校生の時、代用教員で来た可愛い先生に英語を教わった期間があったのだが、「after all」をそのまま「すべてのあとに」と訳して鼻で笑われた記憶が今でも忘れられない。

結局「腕自慢問題」は締め切りギリギリに、最初に出来た解答をほぼそのまま送った。

Q1は検索する表が頭文字別に分かれていて、表ごとに名前を付けてその名前をINDIRECT関数で検索対象にする方法にしたのだが、ヒントで正にそのままの方法が書かれていて変更した。と言っても特別いいアイデアも浮かばず、文字列の組み合わせと配列数式を使って、該当データの値を引っ張り出すというもの。その存在を知ってから私は配列数式を使う解答が多く、今では平凡なテクニックになっているので使いたくないのだが、他の解法が浮かばず結局これで応募した。

型式Sの場合 {=SUM(IF("S"&表の番号列=検索機種,表の価格列))}

これを型式ごとに求めると、該当型式だけ価格が得られるのでそれを表示。

Q2は一番時間をかけたのだが、当初やはり配列数式で
{=IF(AND(判定データ行<="B",COUNTIF(判定データ行,"A")>=2),
   "昇格",IF(COUNTIF(判定データ行,"D")=4,"降格","なし"))}
とした。「<="B"」はAもしくはBがTRUEとなり、かつAが2個以上。降格はDが4つで他はなし、という設問どおりの条件を式にしただけ。
応募直前までAは1000、Bは100で・・・といった計算をしていたのだが、正解を得られないことに気づき、時間が無く最初の解法で送った。以前もあったが、アイデアばかりに執着して肝腎の正解かどうかをチェックできていなかった。orz・・・

Q3もいろいろ試行錯誤したが、最終的には
6時間以内 =(時間<=0.25)*INDIRECT(車種)
12時間以内 =AND(時間>0.25,時間<0.5)*INDIRECT(車種)
24時間以内 =(時間>0.5)*INDIRECT(車種)
24時間超 =(ROUNDUP(時間,0)-1)*INDIRECT(車種)
とした。0.25、0.5というのは何だ?と思うかも知れないが、セルに6:00、12:00と表示されていても内部の値としてはそれぞれ0.25、0.5の実数を時間として表示しているのに過ぎないということ(もっと言えば0と1の羅列なのだが)。24時間が1で、4分の1の6時間は0.25、12時間は0.5ということだ。24時間超は1を超えて初めて発生するので繰り上げて24時間以内分を引いた(-1)数字が計算する単位ということ。


ああ、俺はなにをしているんだろう?

入賞が無理なのは分かっているが、これだけ考えたんだということを誰かに知って欲しかっただけ。ただそれだけ・・・

さーて、次はマクロ問題に取り組むか。こっちは頑張るぞ!

※尚、上記の数式等は記憶だけで書いたので必ずしも有効な式とは限りませんのでご了承を。式を覚えるほど真剣に考えたということでご容赦願いたい。


腕自慢の締め切りが間近になってしまった。

年明け前に一応全問できて、「あとは見直しながら・・・」なんて言っていたらあっという間に締め切りが近づいてきた。

で、今日は改めて見直していたのだが、Q2を変えてみた。考え方はさほど変わらないのだが計算方法をよりシンプルに出来たのではないかと思う(あくまで主観だが)。

しかしQ1、Q3は他の方法も思い浮かばずこのまま送ることになるかも。

Q3は自分なりにひねった解法なのだが、昨年の優秀作品に似ている、もっとスマートに実現できる方法があるかも?という点で入賞には不安。

Q1もけっこうな時間考えたが、現状では解答例程度の出来だ。普通に考えればこうなるだろうといった感じ。

普通の方法で正解を得られれば実務上はまったく問題ないのだが、やっぱり入賞したいしな。かつて思いがけずロータス賞をもらったので、夢よもう一度みたいな気持ちがあるのだ(当時に比べると応募者のレベルがかなり上がっているなぁ)。PC21賞は最新のノートパソコン。いまだにWin98を使っている貧乏人にはノドから手が出るほど欲しぃ〜のだ。可能性が低いのは分かっているけど。

そういえば賞品であるソフトをもらったのに、使い道が分からなくていまだにパッケージのまま棚にしまってある。そんな失礼なことをするから成長しないんだな、きっと。あと2日ほどだけど、もう少しまた考えてみるか。

↑このページのトップヘ