2013-01-21

Microsoft Excel で SQL を利用する方法

Microsoft Excel で SQL

なぜか、今年から家計簿を複式でつけている。それについてのツッコミはまた置いといて…、問題はデータの集計方法。仕訳帳シートにどんどんデータを入力していったとして、総勘定元帳的なシートはどうしようかな?と考えていたところ。たとえば現金だけのシートを作るのに、仕訳帳から「ソート」機能でデータをピックアップしてコピー&ペーストしていたのだけれど、このソート機能がめっぽう使いにくいので。

Excel で SQL が使えると便利なんだけれどなーと思っていたところ、こんな記事を発見。 Excel から ADO (ActiveX Data Objects) を使って、データの SQL 操作ができるようにする VBA スクリプト。使い方やコードも紹介されているので、リンク先から確認してもらえばいいのだけれど、ちょっとつまずいた点だけ書いておく。リンク先サンプルデータ「ESQL.xls」の ESQL と ClearCells と CommandButton1_Click の関数を Excel 2010 のブックにそのまま移植したとして…。

まずは、Excel で VBA マクロと ADO が使えるようにするための設定。
  • Excel ブック保存のときに「Excel マクロ有効ブック (*.xlsm)」で保存。
  • Excel の「ファイル > オプション > セキュリティ センター」、「セキュリティ センターの設定」から「マクロの設定」を「すべてのマクロを有効にする」に。
  • VBA の「ツール > 参照設定」で「Microsoft ActiveX Data Objects 2.8 Library」にチェックを入れて「OK」。
シート内にスクリプト起動用のボタンをつける準備。(Excel 2010 のリボンには、ボタンを設置するための項目がない)
  • Excel の「ファイル > オプション > リボンのユーザー設定」で「メインタブ」に「新しいグループ」を作成。「コマンドの選択」を「リボンにないコマンド」にして、「ボタン (フォーム コントロール)」を作ったグループに追加。
  • リボンからボタンを追加して、マクロに「CommandButton1_Click」を登録。
で、使える SQL 文。
  • テーブル名は [シート名$] でアクセス。
  • 改行文字(Alt + Enter)が入っている項目名は、改行文字の代わりにアンダーバーを入れてアクセス。
後は多分、普通の SQL 文が通るはず。これまで食わず嫌いだったけれど、VBA をもっと使ってみると面白いかもと感じた今日この頃。

2013-01-13

Dell XPS 8300 のグラフィックボードを ATI Radeon HD 5770 に換えた件

グラボのファンが故障

元日に意気揚々とパソコン(Dell XPS 8300)を起動すると、グオーという大きな異音が。ケースを開いて確認してみたところ、グラフィックボードのファンがいかれているみたい。分解したり、掃除機かけたりしても変化なし。新年早々、幸先悪し…とションボリ。


で、12V 0.8A のファン(FD9238H12S)だけをネットで海外から注文し、それが届くまでのつなぎとして、オークションで安く手に入れたグラボを取り付けたというのがこのところの流れ。写真の下が元々の ATI Radeon HD 5870 のグラボ、上が交換して新しくつけた HD 5770 の。随分長さが違うもんだ。

取り付け自体は、サイドパネル用のネジ 1 つと、背面コネクタのネジ 1 つ、そしてグラボ支えパーツのネジ 2 つを外すだけで簡単に行えた。6 ピン× 2 の補助電源は、6 ピン× 1 に減少。

恐怖のブルースクリーン

A problem has been detected and windows has been shut down to prevent damage to your computer. Attempt to reset the display driver and recover from timeout failed. ...

Technical information:
*** STOP: 0x00000116
*** atikmpag.sys
同じ HD 5xxx シリーズということで、ドライバもそのままでいいかな?と思っていたけど、たまに起動時にブルースクリーンが出るようになった。BSOD 後の自動再起動でそのまま正常起動してくれるのだけれど、気持ちが悪い。
  • Catalyst Control Center のアンインストール。
  • AMD Graphics Drivers & Software - Download the latest drivers for your graphics products から最新ドライバをダウンロード&インストール。
  • 新しい Catalyst Control Center が起動しない場合や、ディスプレイの調子がおかしい場合は、前のドライバなどが消えきっていない可能性も。そういうときはもう一回アンインストールし、DRIVER FUSION を使った後、再インストールしたり。
  • Profiles.xml を編集して、GPU コアクロックとメモリクロックを固定。こちらを参考に。
  • Catalyst Control Center の「パフォーマンス > AMD OverDrive > Graphics OverDrive を有効にする」にチェック。
などと、いろいろやっているうちに、いつの間にかパソコン起動時のブルースクリーンが出なくなった。どれが一番効果的だったのかはよく分からないけれども。

HD 5770 の Windows エクスペリエンスインデックス

グラボの換装直後は、Windows エクスペリエンスインデックスが「グラフィックス:Windows Aero のデスクトップパフォーマンス」、「ゲーム用グラフィックス:3D ビジネスおよびゲームグラフィックスパフォーマンス」ともに 6.0 という微妙な値だったけど、最新のドライバを入れた瞬間、どちらも 7.4 に上昇。HD 5870 の 7.8 には及ばないものの、まずは満足。


GPU コアクロックの固定

で、納得がいかなかったのが GPU コアクロック。最大の 850MHz が出る時もたまにはあるのだけれど、大体いつも 400MHz。クロック固定が効いていない?

どの Profile を見ても 400 という数字は設定していないので不審に思って調べてみると、グラフィックボードの BIOS に書かれている値だと判明。

で、結局グラボの BIOS まで書き換えてしまった。使ったのは、GPU-Z と ATI Winflash と Radeon BIOS editor の 3 つ。それぞれのダウンロードや使い方については、以下が詳しいのでご確認を。 そんなこんなでようやく納得のいくパフォーマンスになりましたとさ。ファンが届いて HD 5870 に付け替えたらまたこんな煩雑な設定に追われるのか…と思うと少しゲンナリ。

2013-01-03

正規表現を構文図で視覚化してくれるウェブアプリ Regexper

正規表現を構文図で視覚化してくれるウェブアプリ Regexper

正規表現で書いた文字列を入力すると、視覚的に分かりやすく構文図にしてくれるウェブアプリ。HTML の img(画像)要素の src(画像 URL)属性の値を取得したいときは、こんな正規表現だっけ?と入力してみたのが上の図。おお、これは便利。 正規表現をこれから始めようという人や、他の人に説明したいという人に重宝しそう。

参考:

大阪市営交通(大阪市営地下鉄、大阪市バス)の乗り継ぎ割引をうまく使う

PiTaPa

大阪市営地下鉄や大阪市バスで PiTaPa を使ったとき、たまに改札機に「乗り継ぎ割引」という緑の文字が表示される。いつもではないので、時間帯によって割引されたりされなかったりするのかな?というあやふやな認識でいたけれど、こちらの記事を見て、ようやく謎が解けた。 いわく、
同じカードの中で同一日に地下鉄と市バスを連続して使うと偶数回目を
100円引くというアルゴリムですね。
連続が切れると、やりなおし
とのこと。

たとえば、梅田←→なんばの経路で考えてみると、朝に地下鉄御堂筋線「梅田 → なんば」まで PiTaPa で乗って 230 円。夜は同じ経路を市バス 103 系統「なんば → 大阪駅前」で帰ると、帰りのバス代は 200 円のところが 100 円引きされて 100 円になる。朝、夜と書いたように、一日の間であれば、特に時間に制限はなし。

もし逆の経路をたどって市バス→地下鉄の順で PiTaPa を使うと、今度は地下鉄御堂筋線が 100 円割引になって 130 円で乗れることになる。どちらの場合でも、昼に別の交通機関で PiTaPa を使ってしまうと、乗り換え割引の対象外になってしまう。

あと、乗り換え割引対象になるかどうかは、地下鉄→市バスや市バス→地下鉄の順番だけを機械的に見て判断しているので、乗る駅やバス停は別に一致しなくてもいいというのも便利なところ。

これが、知っておくと便利な大阪市営交通の乗り換え割引の仕組み。「乗り換え」と呼べるものかどうかは疑問が残るけれども…。

PiTaPa じゃなくても

大阪市交通局のサイトによると、PiTaPa に限らず地下鉄・バス・ニュートラム回数カードやスルッと KANSAI カードでも乗り継ぎ割引を利用できるとのこと。 そのカード内で地下鉄・市バスが連続していればいいので、経路によってはカードを使い分けることで、うまく割引の対象にできそうな気がしたり。


ということで、あいかわらずプログラムに関係のない話になってしまったけれど、大阪に住んでいる人にも、たまに大阪市に来る人にも、参考にしてもらえたらと。