Collectionは強い味方|エクセルVBA
Collection は強い味方です
エクセルVBAで、配列はスタメンです、と言っていましたが
配列の存在価値を脅かす「Collection」というのがいます。
Collection とは
Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術
- 作者: 藤井直弥,大山啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/01/28
- メディア: 単行本
- この商品を含むブログ (2件) を見る
Collection とは何か?
ぼくの理解では、ひとつの箱(オブジェクト)に複数の要素をひとまとめにして扱えるようにしたもの、ということです。
この Collection の概念の中で代表的なものを挙げるとすれば、Worksheetsコレクションではないでしょうか。
つまり、Worksheetsコレクションは、単一のWorksheetオブジェクトの集合体です。
例えばこのコード。
Sub サンプル1() Dim lngWS As Long For lngWS = 1 To ThisWorkbook.Worksheets.Count MsgBox Worksheets(lngWS).Name Next End Sub
このコードを実行すると、開いているブックに存在するシート名が、順次メッセージボックスで表示されていきます。
Collectionという観点からこのコードを見ると、こういうことになります。
複数のWorksheetオブジェクトを格納したWorksheetsという箱(Worksheetsコレクション)の中から、単一のWorksheetオブジェクトをひとつひとつ取り出す。
そして、取り出したひとつひとつのWorksheetオブジェクトについて、プロパティの取得・設定やメソッドを実行していく。
まさしく、これがCollectionを扱う基本的な動作と言えます。
Collecitonオブジェクトを使ってみる
Worksheetsコレクションは予め用意されたCollectionですが、自分でCollectionを作ることができます。
それがCollectionオブジェクトです。
Sub サンプル2() Dim colSample As Collection Set colSample = New Collection With colSample .Add Item:="東京都", Key:="a" .Add Item:="大阪府", Key:="b" End With MsgBox colSample(1) '→ダイアログに東京都と表示される MsgBox colSample("b") '→ダイアログに大阪府と表示される Set colSample = Nothing End Sub
コレクションを作成した後、Addメソッドを使ってItemを追加します。
このとき、Addした順に自動的にIndexが割り振られ、このIndexを使ってItemを取得できるようになります。
またKeyの設定は任意ですが、設定した場合はKeyを指定してItemを取得できるようになります。
Keyを設定する際は、重複する値を設定することはできません。
一方、Itemは重複して設定することが可能です。
Collectionを配列のように使う
で、このCollectionの特性を活かして、Collectionを一次元配列のように使うことが可能です。
たとえば次のコードを実行してみると、アクティブシートの1列目に1から10000までの数値が表示されるのが確認できると思います。
Sub サンプル3() Dim colSample As Collection Const cntX As Long = 10000 Dim lngX As Long Set colSample = New Collection For lngX = 1 To cntX colSample.Add lngX Next With ActiveSheet For lngX = 1 To cntX .Cells(lngX, 1).Value = colSample(lngX) Next End With Set colSample = Nothing End Sub
これって配列っぽいですよね?!
同じことを配列でやってみるとこうなります。
Sub サンプル4() Dim lngSample() As Long Const cntX As Long = 10000 Dim lngX As Long ReDim lngSample(cntX - 1) For lngX = 1 To cntX lngSample(lngX - 1) = lngX Next With ActiveSheet For lngX = 1 To cntX .Cells(lngX, 1).Value = lngSample(lngX - 1) Next End With End Sub
このサンプルのような簡単なものだとCollectionの使いやすさが伝わらないかな(汗
ぼくが感じるCollectionの使いやすさは、ハコの大きさを考えずにどんどんAddしていけるところですね。
配列の場合、Redim(Preserve)でハコの大きさを先に決めてから値を入れていく必要がありますが、Collectionの場合それが必要なく、単にAddすればいい。
なので、データの大きさがその時々で変わるような場合、Collectionは威力を発揮してくれます。
Collectionの真骨頂はKey
Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術
- 作者: 藤井直弥,大山啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/01/28
- メディア: 単行本
- この商品を含むブログ (2件) を見る
さらにCollectionの威力をに高めてくれるのがKeyの存在です。
最初の、Collectionの説明で触れたように、Keyを指定することで、それと紐づけられたItemを取り出すことができます。
たとえば、太郎が100円、次郎が200円、三郎が300円持ってるとき、太郎と次郎あわせていくらか?というのをCollectionを使って書いてみると
Sub サンプル5() Dim colSample As Collection Set colSample = New Collection colSample.Add 100, "太郎" colSample.Add 200, "次郎" colSample.Add 300, "三郎" MsgBox colSample("太郎") + colSample("次郎") Set colSample = Nothing End Sub
こんなカンジで表現できますよね。
このようにデータの塊の中からパパッと欲しいものだけを拾ってこれるのはCollectionの強みです。
配列でも同じようなことを再現はできますが、ここまで簡単にはできません。
Collectionの配列的な使い方にKeyが加わることで、威力は絶大になるわけです。
入門者のExcel VBA―初めての人にベストな学び方 (ブルーバックス)
- 作者: 立山秀利
- 出版社/メーカー: 講談社
- 発売日: 2012/04/20
- メディア: 新書
- クリック: 19回
- この商品を含むブログ (8件) を見る
Collectionと配列、どっちが早い?
で、気になるのがCollectionを使った場合の処理時間。
気になりますよね。
Collectionに限らずですけど、オブジェクトって聞くと、なんか処理が遅くなりそうな気がしてしまうのはぼくだけでしょうか?
そこでさっきのサンプルの処理時間を計測してみーたーとーこーろー
回数 | Collection | 配列 |
---|---|---|
1 | 0.656秒 | 0.316秒 |
2 | 0.652秒 | 0.301秒 |
3 | 0.699秒 | 0.313秒 |
4 | 0.658秒 | 0.308秒 |
5 | 0.632秒 | 0.342秒 |
平均 | 0.659秒 | 0.316秒 |
配列の勝ち!
Collectionは配列の倍の時間が掛かってしまうんですね。
この時間差を大きいと見るか小さいと見るかは、やろうとすることとかデータの大きさによって変わってくると思います。
なので、どっちを使うかに拘りすぎず、その時々で判断していく必要があるってことになってしまうわけですが、ぼくは極力Collectionを使うようにしています。
KALDIの水出し珈琲ポットで淹れるアイスコーヒーは絶品!
<2019/07/28追記|2018/06/10追記|2017/06/06追記>
ぼくはコーヒーを毎日、少なくとも1リットルは飲むくらい No Coffe, No Life
しかも、砂糖もミルクも入れず、こんなの飲んでたら胃がおかしくなるんじゃないかってレベルで濃いコーヒーが大好き。
サラリーマンなぼくの会社には、オシャンティーなコーヒードリッパーとかマシンは置けません。
なので、普段はドリップパックを愛用してます。
だけど、暑い季節になってくると、やっぱりアイスコーヒーがいいなぁ、ってなってくるわけです。
それで、会社でアイスコーヒーを飲むために、おウチでアイスコーヒーを作って水筒に入れて持っていくってことを毎年やっています。
お湯で淹れる以上、コーヒーの酸化は免れない
これまでやってきたアイスコーヒーを淹れる方法は2つ。
夜淹れタイプ
1つは、翌日に飲むために、毎晩コーヒーをサーバーに落とし、冷蔵庫で一晩かけて冷やして飲むというもの。
これだと翌朝、すぐにアイスコーヒーが飲めるし、さっと水筒に入れて持ち歩けるようになります。
ただ難点は、いくら冷蔵庫に入れておくとはいえ、淹れてから一晩経つわけですから、やっぱり酸味が増してしまうところ。
朝の段階でであれば美味しく飲むことができますが、水筒に入れて持ち歩いてるうちに、どんどん酸化は進んでいっちゃいます。
コーヒーは好きだけど酸味は苦手で、豆も煎り方も酸味が極力残らないものを志向するぼくとしては、ちょっと許しがたいんですよね。
朝淹れタイプ
もう1つのアイスコーヒーの淹れ方は、毎朝、コーヒーを淹れて、たっぷりの氷で一気に冷やすというもの。
これだとアイスコーヒーを作った直後は格別の美味しさです。
ただ難点は、朝ギリギリまで寝ている派のぼくとしては、コーヒーを淹れるために割かれる時間がやるせなくなることもしばしば。
ゆとりをもって起きる方であれば、朝にアイスコーヒーを作るのはいいかもしれません。
そしてやっぱり、水筒とかに入れて持ち歩いているうちに酸化が進んでしまいます。
そう、いずれにしても熱湯でコーヒーを淹れた以上、酸化の進行からは逃れられないんですよね。
そんな悶々とした気持ちを抱きつつ、やっぱりアイスコーヒーが飲みたいが故に、酸化の進行には目をつぶってきました。
水出し珈琲ポットは酸味の嫌いな珈琲好きの救世主
そんな中、ふらっと寄ったKALDIあったんですよ!
で、買っちゃいました。これ。
そう、水出し珈琲ポット。税込999円。
はい、開けました!
コーヒー投入!
説明書見るとコーヒー80gに対して水1リットルの割合で作ってね、ってことになっています。
それで、ここまで入れたらコーヒー80gだよってラインが示されているのですが、でもね、8gスプーンで10杯入れても、まだまだそこに達しないくらい高いレベルが要求されるラインになっています。
なので、最初から要求を無視して8gスプーン10杯で作ることを決断。
で、水を投入!
(電子ケトルで入れてるのは手頃なポットがなかっただけで、お湯を入れてるわでけはありません汗)
あとは、冷蔵庫に入れてコーヒーが抽出されるのをじっくり(寝て)待つのみです。
はい、翌朝になりました。
ストレーナーと呼ばれるフィルターを外し
グラスに注げば出来上がり!
うまいっ!
しっかりと美味しいアイスコーヒーになっていました。
ちなみにホット用に中挽にした粉を使ってもやってみましたが、さすがにちょっと薄めの仕上がりになりました。やはりアイスコーヒーを作るときは細挽の方がいいですね。
求めるテイストに対してどのコーヒーを使うか、量をどうするかなどは、豆、煎り具合、挽き方によって変わってくると思いますので、試行錯誤を重ねる必要がありそうです。
コーヒーを買うとき、いつもぼくは加藤珈琲を利用しています。
本来の水の入れ方は、ストレーナーに入れたコーヒーの粉の上からそっと注いでいくというものですが、これだと結構時間がかかります。
時間がないときは、コーヒーの粉をある程度湿らせたらあとはボトルに直接水を投入して、ティーバッグのごとくコーヒーを抽出するとラクです。
ただこのとき、コーヒーの粉全体に水が行き渡らないままになりがちですので、水を入れたのちストレーナー内のコーヒーの粉をスプーンなんかで軽くかき混ぜて水が行き渡るようにするといいです。
で、水筒に入れて会社に持って行ったわけですが、酸化が進むこともなく、長いこと美味しさを満喫することが出来て満足です。
この夏はコイツに一杯活躍してもらうことになりそうです。
ぼくがたまたまKALDIで衝動買いした水出し珈琲ポットですが、これを作っているのはHARIOなんですね。
Amazonでも買えるようですので、この夏のお供にしてみてはいかがでしょうか。
HARIO (ハリオ) 水出し コーヒーポット 1000ml コーヒードリップ 8杯用 ブラウン MCPN-14CBR
- 出版社/メーカー: HARIO(ハリオ)
- メディア: ホーム&キッチン
- この商品を含むブログを見る
<2017/06/06追記>
先日カルディに寄ってみたら、今年も水出しコーヒーポット売り出していましたね。
ただ、色が違うぅ!!
フタの部分が青色になっていました。
HARIO直販のものが茶色だから、それと被らないように軽く差別化を図ったのでしょうか、、、
<2018/06/10追記>
前回の追記から約1年。
先日カルディに寄ってみたら、今年も水出しコーヒーポット売り出していましたね。
ただ、デザインが違うぅ!!
蓋の色は昨年と変わりありませんが、ガラス部に夏感モリモリ!
ファミリーなぼくは”さわやかになったなー”という印象ですが、意識高い系男子には使いにくいデザインになってしまいましたね。
<2019/07/28追記>
さらに1年が経過。 先日カルディに寄って見たら、今年も水出しコーヒーポット売り出していましたね。
ただ、サイズ違いが増えてるうぅ!!
一回分/ひとり分が作り易くなりましたね。
固定資産税?都市計画税?床面積?
来ました。固定資産税納税通知書。
来る、来るとは聞いていましたが、いざ来るとやっぱりため息がでますよね。
で、税の明細書を見ていたら、「現況床面積」なるものがあって、それをベースに課税されているとか。
なんぞソレ?ということで、固定資産税について、ちょっと調べました。
固定資産税ってなに?
ひとまず固定資産税を調べるために、地方税法をチェック!
固定資産って何?
まぁ、なんとなく想像はつくけど、一応見てみると
地方税法 第三百四十一条
固定資産税について、次の各号に掲げる用語の意義は、それぞれ当該各号に定めるところによる。
一 固定資産 土地、家屋及び償却資産を総称する。
・・・(後略)
土地や家、マンションも当然、対象になるってことね。
それじゃ固定資産税って何?
地方税法 第三百四十三条
固定資産税は、固定資産の所有者(質権又は百年より永い存続期間の定めのある地上権の目的である土地については、その質権者又は地上権者とする。以下固定資産税について同様とする。)に課する。
固定資産を持っていると課される税金ってことね。
家とかマンションを持っていると、そこに住んでいようがいまいが、所有しているならば、課税されるってことか。
いくら税金が掛かる?
地方税法 第三百五十条 固定資産税の標準税率は、百分の一・四とする。
・・・(後略)
1.4%の税金がかかるってことね。
税金を掛ける掛けないの判定日はいつ?
地方税法 第三百五十九条
固定資産税の賦課期日は、当該年度の初日の属する年の一月一日とする。
毎年1月1日ってことね。
お正月気分で浮かれてる時に、密かに税金取ること決めちゃってるってことですか。
誰が税金を課すの?
地方税法 第三百四十二条 固定資産税は、固定資産に対し、当該固定資産所在の市町村において課する。
・・・(後略)
市町村が課税主体になるってことね。
地方税だから課税主体が国ってことではないのは察するけれど、課税主体は都道府県ではなくて、それより下の階層の市町村ってことか。
でも、東京都の場合は区が課税主体になるの?
地方税法 第七百三十四条
都は、その特別区の存する区域において、普通税として、第四条第二項に掲げるものを課するほか、第一条第二項の規定にかかわらず、第五条第二項第二号及び第六号に掲げるものを課するものとする。この場合においては、都を市とみなして第三章第二節及び第八節の規定を準用する。
東京都の場合は特例があって、23区内においては都が課税主体になるものがあるようで、「第五条第二項第二号及び第六号に掲げるもの」を見てみると
地方税法 第五条
市町村税は、普通税及び目的税とする。 2 市町村は、普通税として、次に掲げるものを課するものとする。ただし、徴収に要すべき経費が徴収すべき税額に比して多額であると認められるものその他特別の事情があるものについては、この限りでない。 一 市町村民税
二 固定資産税
三 軽自動車税
四 市町村たばこ税
五 鉱産税
六 特別土地保有税
「固定資産税」とばっちり書かれています。
なので、東京都23区内においては特例で、東京都が固定資産税の課税主体になるということです。
つまり固定資産税とは?
固定資産税は、1月1日時点で土地や建物を所有している人に課せられる地方税。課税主体は原則、市町村。ただし、東京都23区内においては、特例で市町村に代って東京都が課税する、ということなんですね。
都市計画税ってなに?
固定資産税についてはある程度わかったし、そもそも納税通知書が来ることは覚悟していたので、それはそれでいいんです。
ただ、いざ来た納税通知書を見てみると、聞き慣れない単語が並んでいます。
そう、「都市計画税」です。
こんなものがあるなんて寝耳に水。
計画税とか言ってますが、ぼくにはそんなもの取られる計画はありませんでしたよ。
都市計画税って何?
地方税法 第七百二条
市町村は、都市計画法 に基づいて行う都市計画事業又は土地区画整理法 に基づいて行う土地区画整理事業に要する費用に充てるため(中略)市街化区域内に所在する土地及び家屋に対し、その価格を課税標準として、当該土地又は家屋の所有者に都市計画税を課することができる。(後略)
ということで、市街化区域内にある土地と家屋を対象として、その所有者に課税される税金ということです。
固定資産税と違って償却資産は課税対象資産に入っていないんですね。
また、地方税法第702条の各項を見ていくと
- 税率は最高0.3%
- 税金賦課の判定日は、固定資産税と同様、毎年1月1日
- 固定資産税と併せて徴収
ということです。
都市計画税の軽減特例がある
都市計画税の計算の根拠になる土地の価格については段階的な軽減措置が採られています。
一方で、建物に関しては土地のような軽減措置はありません。
車の年間維持費を振り返ります
車を持っている以上、何かと出費がかさみます。
税金、保険、駐車場代、ガソリン代、、、。
それらが年間どれくらいになってるのか振り返ってみたいと思います。
車の年間維持費は?
ちなみに僕が乗っている車は燃費は6km/Lとnonエコ仕様。
江東区内のマンションで駐車場を借りています。
車の用途は、基本的に土日に一週間分の食材の買い出しや近場(10-20km圏内)へのお出かけ。2ヶ月に一度程度、片道100-200kmの遠出、といったところで、年間走行距離は凡そ5,000kmです。
この使用条件下で掛かる費用をざっくりと書き出してみました。
項目 | 費用 | 年換算 | メモ |
---|---|---|---|
税金 | 51,000円/年 | 51,000円 | |
自動車保険 | 62,630円/年 | 62,630円 | SBI損保 |
マンション駐車場代 | 28,000円/月 | 336,000円 | |
その他駐車場代 | 2,000円/月 | 24,000円 | お出かけ先の駐車場代 |
ガソリン代 | 10,000円/月 | 120,000円 | 燃費が悪い! |
高速料金 | 3,000円/月 | 26,000円 | |
車検 | 150,000円/2年 | 75,000円 | 要パーツ交換で費用上振れも |
計 | 694,630円 |
いつもすべての費用を集計しているわけではなく、感覚的な金額も一部含まれていますので、そこはご容赦ください。
でも、改めて集計してみるとため息しか出ませね。
年間走行距離が5,000kmなので、1kmあたり139円。
ただ、ここには車の購入代金を含めてなくて、仮に乗り出しで400万円で、10年間乗るとすれば、年間40万円。
先の年間維持費と合わせれば年間1094,630円。
1kmあたり219円ということになります。
車を手放してタクシーメインにしたらお得?
年間走行距離5,000km。
これと同じ距離をタクシーで移動したら、いったいいくら掛かるのか?
日本交通 タクシー料金シミュレーションを使って、高速道路を使わずに東京から大阪に行った場合を調べると、移動距離が539.8kmで運賃が157,150円です。
なので1kmあたり291円ということになります。
車を持ち続けるのか、あるいは車を手放してすべてタクシーで移動するのか、で比較すると、車を持ち続ける方が安上がりということになりますね。
車を手放してレンタカーメインにしたらお得?
年間走行距離5,000km。
これと同じ時間をレンタカーで移動したら、いったいいくら掛かるのか?
5,000kmを、一般道走ったり高速走ったりと様々な場面がありますが、均してざっと時速40kmで走っていたとすると、走行時間は167時間。
全国のレンタカー最安値比較なら「レンナビ」 を使って、東京駅界隈、土日・昼間、6時間、Sクラス(ヴィッツなど)で一番安いレンタカーを探すと5,940円(税込)。
なので、5,940円/6時間×167時間=165,330円。
僕の年間走行距離5,000kmを前提に1kmあたりに換算し直すと、1kmあたり33円ということになります。
車を持っているケースと、タクシーを利用するケースが、いずもれ1kmあたり200円台だったことからすると、一気に安くなった感があります。
ただ問題は、レンタカーを借りる場所への移動、借りる手続きをどう捉えるか、ということなりそうです。
車を持っている人(含む自分)の言い分に、「使いたい時にいつでもすぐ使える」っていうのがあります。
なので、レンタカー会社に行くまでに電車やバスを乗り継いで行かないとならない、ということだと日常使いはしにくいですね。
逆に、家の近く、それも徒歩数分圏内にレンタカー会社がある場合は、車を持たずにレンタカーで済ますことも可能かもしれません。
自動車税の納税方法は?
自動車には数多くの税金が掛かっています。
車を買うときに掛かる税金
- 自動車取得税
- 消費税
車を持っていることで掛かる税金
燃料に掛かる税金
* ガソリン税(揮発油税+地方道路税)
* 消費税
車を持っている以上、毎年支払をしなければならない自動車税は決して安くはないです。
そのため余裕を持って自動車税の支払に備えなければなりません。
自動車税ってどうやって納付するの?
自動車税の納付方法は都道府県によって定められており納税通知書にその記載があります。
一例として、東京都の納付方法は次のようになっています。
- 東京都指定金融機関及び東京都公金収納取扱店
- 郵便局
- 都税事務所・支所・支庁・都税総合事務センター・自動車税事務所
- コンビニエンスストア
- パソコン・携帯電話・ATM
東京都の指定金融機関および公金収納取扱店は、都市銀行のほか、地方銀行・第二地方銀行、信用金庫、信用組合、農協と幅広くカバーされています。
取扱金融機関は都道府県によってマチマチですが、都市銀行と各都道府県を拠点とする地方銀行・第二地方銀行は取り扱いがあります。
また東京都と同様に郵便局(ゆうちょ銀行)、コンビニエンスストアでも取り扱いがあり、ネットバンキングを利用できますので、自分の都合に合わせて納付が可能です。
自動車税の納付にクレジットカードは使えるの?
自動車税はいろんな納付方法が用意されていますが、高額な税金を納めるわけですから少しでもお得になる方法ってないのかって考えちゃいますよね。
そこで真っ先に思いつくのがクレジットカードでの支払い。
自動車税の支払いにクレジットカードを使うことは可能なんです。であれば、クレジットカードのポイントが貯められそうですよね。
でも、クレジットカードで支払う場合には納税額に応じた決済手数料が掛かってしまいます。
東京都の場合は、税金のクレジットカード支払いサイトを用意していますが、税額1万円あたり73円の決済手数料(消費税別)が掛かるので、1万円あたり100円相当(1万円×1%)のポイントがついたとしても、その大部分が決済手数料で相殺されてしまいます。
東京都のように自前でクレジットカード支払いサイトを用意していなくても、Yahoo!公金支払いで対応している都道府県も多いです。
この場合でも税額に関わらず一律324円(消費税8%込)の決済手数料が必要なため、場合によってはクレジットカード支払いで得られるポイント以上に手数料が取られることになります。
自動車税の支払いは電子マネーを使うとお得!
自動車税をクレジットカードで納付しようとすると手数料が掛かってしまうのでメリットがほとんどありません。
そこでオススメなのがクレジットカードからチャージした電子マネーで自動車税を納付するというもの。
これならクレジットカードのポイント(マイル)と電子マネーのポイントを両方獲得できますよね。
現金とか振り込みで納付したら1円も還元されないけれど、ちょっどだけ手間は掛かりますが、電子マネーを活用すれば少しだけお得になります。
せっかく高額な支払いをするんですから少しでも還元があると嬉しいですよね。