軽量な電動自転車のおすすめは?タイプ別に紹介
電動アシスト自転車は重いですよね。
電動アシスト自転車が倒れてしまった時、力の弱い女性や腰痛持ちの方は持ち上げるのは大変です。
でも電動アシスト自転車は坂道や重い荷物を載せて走るときに便利なので、一度乗ってしまうと手放せなくなってしまいます。
本日はそんな方々におすすめな軽量の電動アシスト自転車を紹介します。
シティータイプの軽量電動アシスト自転車
BRIDGESTONE アシスタU デラックス A6XC40
自転車安全基準「BAA」適合です。
またリアフレームはクラスなのでチャイルドシートを設置できます。
後輪を施錠するとハンドルもロックされる一発二錠のため盗難にも遭いにくい電動アシスト自転車です。
サイズ | 26インチ |
---|---|
重量 | 26.8kg |
変速方式 | 内装3段 |
充電時間 | 4時間 |
1充電あたりの走行距離目安 | 87km |
PANASONIC Jコンセプト BE-JELJ012
日本の伝統的な色をコンセプトにした4色「漆黒」「白磁」「松葉」「紅緋」があります。
また20インチの小径タイヤなので乗り降りしやすいく、簡単にサドルが抜き取られない構造のサドルガードマンを採用しています。
バッテリー脱着と同じキーで施錠・開錠が可能なワイヤ錠付(1キー2ロック)です。
サイズ |
20インチ |
---|---|
重量 | 18.2kg |
変速 | なし |
充電時間 | 4時間 |
1充電あたりの走行距離目安 | 91km |
PANASONIC ビビ L20 BE-ELL032
「クラス18」なのでチャイルドシートを乗せることはできませんが、20型の小径タイヤ、低床アルミフレームなので乗り降りしやすい自転車です。
フロントのかごが大型樹脂ロッドバスケット(高さ約240mm×奥行約350mm×幅約410mm)なので、荷物をたくさん積みたい方にお勧めです。
サイズ | 20インチ |
---|---|
重量 | 21.7kg |
変速 | 内装3段 |
充電時間 | 4時間 |
1充電あたりの走行距離目安 | 最大70km |
スポーツタイプの軽量電動アシスト自転車
TRANSMOBILLY TM-MV207E
スタイリッシュなデザインと走行性を兼ね備えたスポーツモデルです。
バッテリーはワンタッチ脱着式バッテリーで、バッテリー上部の電源ボタンを押すことで電源のON/OFFができます。
7段変速ギアや長距離走行に適したクッション性の高いサドルを搭載しています
サイズ | 20インチ |
---|---|
重量 | 13kg |
変速 | 7段 |
充電時間 | 2.5時間 |
1充電あたりの走行距離目安 | 最大35km |
YAMAHA YPJ-R 700C
約15kgの車両重量を実現する為に開発した小型バッテリーを搭載しています。
付属のUSBアダプターをバッテリーに装着することで、モバイルバッテリーとしてスマートフォンやタブレットなどを2台同時に充電できます。
大型の液晶を搭載しているので、パワーメーター 時計 スピードメーター バッテリー残量 消費カロリーなどを表示できます。
サイズ | 28インチ |
---|---|
重量 | XSサイズ 15.2kg Mサイズ15.4kg |
変速 | 22段 |
充電時間 | 1時間 |
1充電あたりの走行距離目安 | 最大48km |
louisgarneau AVIATOR-E
1回の充電時間は7時間と長いですが、100km以上の走行が可能です。
滑り止め機能のついた疲れにくいサドルを搭載しているため、長時間のサイクリングにも向いています。
わずかな力でスピードをコントロールできる油圧式ディスクブレーキも特徴です。
サイズ | 28インチ |
---|---|
重量 | 17.6kg |
変速 | 8段 |
充電時間 | 7時間 |
1充電あたりの走行距離目安 | 最大105km |
折り畳み式の軽量電動アシスト自転車
ASAHI アウトランク e -K
樹脂製の手持ちがフレームにあるので、片手で持ち運べるポータブル電動アシスト自転車です。
手のひらサイズの小型バッテリーを搭載していて、3時間の充電で24km走行が可能となっています。
バッテリーはモバイルバッテリーとしても利用可能で、スマートフォンの充電ができます。
車体重量が8.5kgと軽量で3ステップで折り畳むことができ、専用バックに入れれば電車に乗ることも可能です。
サイズ | 14インチ |
---|---|
重量 | 13.2kg |
変速 | なし |
充電時間 | 3時間 |
1充電あたりの走行距離目安 | 最大24km |
TRANSMOBILLY AL-FDB166
480Kg の手のひらサイズ小型バッテリーを採用しています。
マグネットタイプのバッテリーなので約1秒で取り外しが可能です。
2時間の充電で12kmの走行が可能でモバイルバッテリーとしても利用可能となっています。
サイズ | 16インチ |
---|---|
重量 | 12.9kg |
変速 | 6段 |
充電時間 | 2時間 |
1充電あたりの走行距離目安 | 最大12km |
HARRYQUINN AL-FDB160E
ドルフィン型のスタイリッシュなフレームに7.0Ahのバッテリーを内蔵しています。
見やすい操作パネルや折り畳んだ時に車体の安定感を保つ前輪フックを装備するなどデザインだけでなく機能性にも優れています。
リアキャリアにキャスターが付いているので、折り畳んでも転がして移動ができます。
サイズ | 16インチ |
---|---|
重量 | 14.6kg |
変速 | なし |
充電時間 | 3.5時間 |
1充電あたりの走行距離目安 | 最大12km |
最後に
いかがだったでしょうか。
タイプ別に軽量の電動アシスト自転車を紹介しました。
用途によって購入するタイプや重要視する機能が変わってきます。
ぜひ自分に合った電動自転車を探してみてください。
電動アシスト自転車の部品にも寿命があるのか
電動自転車に寿命はあるのでしょうか。
電動自転車を販売しているメーカーのホームページを確認しても書いていないため分かりませんが、部品に関しては寿命があります。
電動自転車の部品の寿命はどのくらいなのか
バッテリーの寿命
最近発売になる電動自転車のバッテリーはリチウムイオン電池が多く、700 ~ 900回の放充電で購入時の半分の量になると言われています。
走行距離が著しく短くなってきたらバッテリーの寿命なので、新しいバッテリーと交換したほうが良いでしょう。
またバッテリーは経年劣化をするので、使用頻度が低くても劣化していきます。
1年に数えるくらいしか電動自転車に乗らなくても劣化していきますので、バッテリーの負荷が少ない使用方法や保管方法でバッテリーの寿命を延ばしましょう。
チェーンの寿命
チェーンは走行時に強く引っ張られるため、走行距離が長くなればなるほど伸びてきてしまいます。
一般的に3,000 ~ 5,000kmの走行がチェーンの交換時期と言われていますが、累積走行距離が表示されるような電動自転車はなかなかありません。
そのため、以下のような症状が現れたらチェーンを交換するタイミングだと考えてください。
- チェーンが頻繁に外れる
- 自転車のペダルをつよっく踏み込んだ時にチェーンが外れるような感覚がある
- ギアチェンジがスムーズに出来ない
チェーンが伸びた状態でも走ることはできますが、他の部品を削ってしまいその部品の寿命を短くしてしまいます。
症状が現れたら早めに交換するようにしましょう。
タイヤの寿命
電動自転車に限らず道を走っているとタイヤの溝が段々なくなってきます。
道の状態や自転車に乗っている荷物や子供の重さによって溝の減り具合が変わってきますが、年に1度はタイヤの溝を確認し、溝が減ってきたと思ったらタイヤの交換をしましょう。
ブレーキの寿命
自転車のブレーキには「ブレーキシュー」というタイヤを挟む部分と「ブレーキワイヤー」というブレーキレバーを握った力をブレーキに伝える部分があります。
ブレーキシューはブレーキをかけるたびにタイヤとの摩擦ですり減っていきます。
またブレーキワイヤーは摩擦と経年劣化で切れてしまう可能性があります。
ブレーキワイヤーが切れてしまうとブレーキが効かなくなり、最悪の場合事故に遭ってしまいます。
自分でブレーキシューやブレーキワイヤーの状態を確認するのは難しいと思うので、年に1度は電動自転車を購入したお店やメンテナンスをしてくれるお店で確認をしてもらいましょう。
電動自転車を長く使用するためには
バッテリー
バッテリーの充電の回数が増えればその分劣化していくので、まずはバッテリーの充電回数を減らす工夫をしましょう。
我が家では15%を切った位を目安に充電をしています。
また電動自転車はこぎ出しが一番負荷がかかりやすいため、ギアを一番軽くしておくと受けるアシストが減りバッテリーを節約することができます。
タイヤ
自転車の空気圧が減るとスピードが出にくくなり、バッテリーの消耗も激しくなります。
月に一度は空気圧を確認するようにしましょう。
チェーン
チェーンに潤滑油をさすことで走行時のチェーンの動きがスムーズになったり、錆を防止したりすることができます。
また雨にぬれるとチェーンが錆びてしまう原因になるので、雨に濡れない場所に駐車したり自転車カバーをかけて濡れないようにするなどの工夫をしましょう。
最後に
いかがだったでしょうか。
せっかく高いお金を出して買った電動自転車なので、できるだけ長い期間使いたいですよね。
できるだけ長く使えるように、年に1度くらいはメンテナンスをしてみてください。
電動自転車のバッテリーだけ盗難に遭う?盗難予防とメーカー補償を紹介
電動自転車のバッテリー盗難事件が発生していたことをご存知でしょうか。
走行のアシストをしてくれるので坂道を上る時などはとても助かります。
ただバッテリーがないとアシストを受けられないので、普通の自転車より重くなり平らな道でも走るのに一苦労です。
そんな状態にならないためのバッテリー盗難予防方法や各メーカーの盗難補償について紹介します。
電動自転車のバッテリー盗難事件が発生している
電動自転車のバッテリーだけが盗まれるという事件が過去に発生しています。
「バッテリーだけ盗んで意味があるのか?」と思われる方もいらっしゃるのではないでしょうか。
私も盗んでどうするのかと思っていたのですが、どうやらメルカリやYahooオークションなどインターネット上で販売していたようです。
電動自転車のバッテリー盗難を防ぐ方法
駐輪時には必ず鍵をかける
子供乗せ電動自転車などで多いのですが、自転車ロック用とバッテリーの取り外しに使う鍵が同じ自転車があります。
有料駐輪場だと安心して鍵をかけないで自転車から離れてしまうと、バッテリーが簡単に取り外せてしまいます。
電動自転車から離れる時は、たとえ少しの時間だとしても鍵をかけるようにしましょう。
駐輪時にバッテリーを持ち歩く
原始的な方法ですがバッテリー盗難予防としては最強の予防法です。
容量の大きいバッテリーだと持ち運ぶのは現実的ではありませんが、容量の小さいバッテリーであれば取り外して何とか持ち歩ける重量です。
バッテリー盗難防止用の鍵をかける
私もこの記事のためバッテリー盗難について調べていた時に知ったのですが、
バッテリー盗難防止用の鍵があります。
この鍵を付けることで簡単にはバッテリーを持ち去ることが出来なくなります。
ただ充電のためにバッテリーを外そうとする時に盗難防止用の鍵も外さないといけなくなるので、若干面倒になります。
外す鍵が1つ増えても問題ないという方にはおすすめの商品です。
サイクルカバーをかける
自宅で保管している時は自転車が丸見えの状態よりも、サイクルカバーをしてどんな自転車があるのかが分からないため盗難に合いにくくなります。
盗難防止だけでなく雨風も防いでくれるので、カバーをかけないで保管しているよりも錆を防止することができます。
バッテリー盗難に対しての各メーカーの補償
YAMAHA(ヤマハ)
電動自転車本体の盗難補償はありますが、バッテリーなど本体一部のみの盗難については補償対象外となります。
バッテリーだけ盗難にあいました。盗難保険の対象になりますか? | 電動アシスト自転車 | ヤマハ発動機株式会社
BRIDGESTONE(ブリジストン)
電動自転車本体の盗難補償はありますが、構成部品単体が盗難に遭った場合や、盗難車に取り付けられていたオプションパーツは対象外となります。
Panasonic(パナソニック)
電動自転車本体の盗難補償についての記載はホームページにありましたが、バッテリーの盗難補償については記載がありませんでした。
GIC(ジック)
盗難補償に関しての記載がホームページにありませんでした。
Daytona(デイトナ)
メーカーの盗難補償はありません。
販売店で盗難補償に加入できる場合があるので、購入時に確認が必要です。
BESV(ベスビー)
電動自転車本体の盗難補償はありますが、バッテリーなど部品の盗難補償はありませんでした。
TSINOVA(チノーバ)
盗難補償に関しての記載がホームページにありませんでした。
Benelli(ベネリー)
盗難補償に関しての記載がホームページにありませんでした。
AERO-LIFE(エアロライフ)
盗難補償に関しての記載がホームページにありませんでした。
Cyrusher(サイラッシャー)
盗難補償に関しての記載がホームページにありませんでした。
MIYATA(ミヤタ)
電動自転車本体の盗難補償はありましたが、バッテリーの盗難補償はありませんでした。
MIYATA自転車 | MIYATA Care | MIYATAの「盗難補償」について
最後に
いかがだったでしょうか。
メーカーとしても自転車本体の盗難補償はしてもバッテリーなどの部品の盗難補償まではしてくれません。
バッテリーのない自転車はただの重たい自転車になってしまいます。
バッテリーの盗難に遭わないために対策をしっかりとしましょう。
子供乗せ電動自転車が安い?電動自転車を安く購入する方法
保育園や幼稚園の送り迎えに重宝する電動自転車。
普通の自転車よりも価格が高くて10万円以上するため、購入をためらってしまう方も多いのではないでしょうか。
そんな高価な電動自転車ですが購入の時期やちょっとした手間をかけると、10万円以下で購入できることもあります。
本日は子供乗せ電動自転車を安く購入する方法を紹介します。
子供乗せ電動自転車を安く購入する方法
型落ちの電動自転車を購入
メーカーから新型の電動自転車が発売されると、旧型電動自転車は値引きされることが多いです。
メーカーのホームページを確認してみると、10月~12月にかけて新型の電動自転車が発売されていることが多いので、そのくらいのタイミングで量販店などに行ってみると型落ちの電動自転車が安く購入できます。
電動自転車にチャイルドシートを装着する
子供乗せではない安い電動自転車にチャイルドシートを装着することで値段を抑えることが可能です。
普通の電動自転車にチャイルドシートを装着する場合には注意点があります。
必ずリアの最大積載質量 を確認してください。
【最大積載質量 - チャイルドシートの重量】がチャイルドシートに乗せられる子供の体重になります。
中古自転車を探す
中古の電動自転車を購入すれば新品を購入するよりも安く済みます。
中古の電動自転車はインターネットで検索するとたくさん出てくるので、掘り出し物があるかもしれません。
セールの時期を狙う
年末年始や期末のセール時期になると、電動自転車がセール対象品になり通常よりも安く購入することができます。
電動自転車を購入する時の注意点
購入したい車種や色がないかもしれない
型落ちの自転車や中古の自転車はその時点で売られているものしかないので、好みの車種や色があるとは限りません。
我が家はビックカメラで型落ちの電動自転車を購入しました。
私が購入した時には人気のありそうな色は全て売り切れていて、3種類ほどしか残っていませんでした。
購入後のメンテナンスの事を考える
電動自転車は突然充電できなくなることがあります。
そんな時近くに見てくれるお店があるとかなり助かります。
我が家ではヤマハのpas babbyを購入しましたが、2年経たずにバッテリーの充電ができなくなりました。
しかし歩いて5分程度の所にヤマハの販売店があり、そこで対応してもらえたためすぐに使用できるようになりました。
電動自転車を購入するお店が自宅近くにあればそこでメンテナンスをしてもらえますが、そうでない場合はメンテナンスしてもらえそうなお店を自分で見つける必要があります。
購入前に自宅周辺でメンテナンスをしてもらえそうなお店を確認しておくことをおすすめします。
中古の場合はバッテリーの寿命を考える
中古の自転車は新品に比べてバッテリーの寿命が短いです。
最近発売されている電動自転車のバッテリーはリチウムイオン電池です。
リチウムイオン電池は700~900回の充放電で購入時の半分の容量になると言われています。
購入時点でどのくらい充放電されているかでバッテリーの寿命が変わってきます。
最後に
いかがだったでしょうか。
電動自転車は乗る頻度が高いので、値段だけでなく乗り心地も重要です。
販売店によっては試乗させてくれるところもあるので、購入前にはぜひ試乗をして乗り心地も確認してみてください。
VBAのIf文で色々な論理演算子(Not、And、Or)を使ってみよう
Excel VBAでプログラミングをしていると条件によって処理を分けたい時が出てきます。
そんな時にはIf文を使うことが多いと思いのではないでしょうか。
If文では論理演算子(Not、AND、OR)を使用することで様々な条件を指定することができます。
本日はIf文で使用する論理演算子の使い方について紹介します。
- 今回使用するExcelシート
- If文でNot演算子を使用すると条件の否定になる
- Not演算子を使わないで条件式の否定をする方法
- AND演算子は全部の条件が合致する
- OR演算子はどれか一つの条件に合致すればよい
- 論理演算詩を多用して複雑にしすぎないようにする
- 最後に
今回使用するExcelシート
この記事では以下のExcelシートを使用します。
紹介しているVBAは全てボタンを押した時の処理になっています。
If文でNot演算子を使用すると条件の否定になる
If文の条件判定式の前にNotをつけると、条件式の否定になります。
Not演算子を使用したプログラム
Sub ボタン1_Click() Dim i As Integer For i = 1 To 5 If Not ActiveSheet.Cells(i, 1) Like "*山*" Then ActiveSheet.Cells(i, 2).Value = "×" Else ActiveSheet.Cells(i, 2).Value = "○" End If Next End Sub
プログラムではA列に「山」が含まれているかの判定をB列に表示しています。
If Not ActiveSheet.Cells(i, 1) Like "*山*" Then
Notを考えないとA列に「山」が含まれている場合という条件式になります。
なのでNotを条件式の前につけると、A列に「山」が含まれない場合という条件式に安ります。
Not演算子を使わないで条件式の否定をする方法
Not演算子を使わなくても条件式の否定をすることはできます。
処理結果としては同じなので、分かりやすい方法を使用してください。
If文でElseを使う
Sub ボタン1_Click() Dim i As Integer For i = 1 To 5 If ActiveSheet.Cells(i, 1) Like "*山*" Then ActiveSheet.Cells(i, 2).Value = "○" Else ActiveSheet.Cells(i, 2).Value = "×" End If Next End Sub
If文のElseは条件式に当てはまらない時の処理なので、条件式にNotを使用した場合と同じ処理結果になります。
比較演算子「<>」を使用する
Sub ボタン1_Click() Dim i As Integer For i = 1 To 5 If ActiveSheet.Cells(i, 1) <> "東京都" Then ActiveSheet.Cells(i, 2).Value = "○" Else ActiveSheet.Cells(i, 2).Value = "×" End If Next End Sub
比較演算子「<>」は条件式の比較演算子は「<>」の左右がイコールでない場合に処理を行います。
サンプルではA列が「東京都」でない場合は〇、そうでない場合は「×」をB列に出力するしています。
AND演算子は全部の条件が合致する
If文では複数の条件をセットすることができます。
AND演算子を条件で挟むと両方の条件がTrueの場合にIf文内の処理を実行します。
Sub ボタン1_Click() Dim i As Integer For i = 1 To 5 If ActiveSheet.Cells(i, 1) Like "山*" And ActiveSheet.Cells(i, 1) Like "*県" Then ActiveSheet.Cells(i, 2).Value = "○" Else ActiveSheet.Cells(i, 2).Value = "×" End If Next End Sub
A列の文字列が「山」から始まり、「県」で終わる場合は「〇」、それ以外は「×」をB列に表示します。
比較対象が一緒だからと言って「If ActiveSheet.Cells(i, 1) Like "山*" And "*県" Then」
という書き方ができそうですが、これだとエラーになってしまいます。
OR演算子はどれか一つの条件に合致すればよい
AND演算子は全ての条件がTrueである必要がありますが、OR演算子は複数の条件のどれか一つがTrueだとIf文内の処理を実行します。
Sub ボタン1_Click() Dim i As Integer For i = 1 To 5 If ActiveSheet.Cells(i, 1) Like "山*" Or ActiveSheet.Cells(i, 1) Like "*県" Then ActiveSheet.Cells(i, 2).Value = "○" Else ActiveSheet.Cells(i, 2).Value = "×" End If Next End Sub
A列の文字列が「山」から始まるか「県」で終わる場合は「〇」、それ以外は「×」をB列に表示します。
論理演算詩を多用して複雑にしすぎないようにする
一つの条件式で複数の論理演算子を使用することで複雑な処理ができるようになります。
ただ複雑になればなるほどバグの原因となるので、一つの条件式にたくさんの論理演算子を並べることは避けましょう。
一つの条件式に処理をまとめるのではなく、複数のIf文にしたりElseIfを使用して条件式がシンプルになるように心がけてみてください。
最後に
いかがだったでしょうか。
If文で論理演算子を使うとできることが広がるのでたくさん使いたくなりますが、一つの条件に使いすぎると分かりにくくなってしまいます。
できるだけ分かりやすい条件式になるように心がけてみてください。
ExcelのToday関数で今日の日付や曜日を入力!和暦表示方法も紹介
ExcelのToday関数は今日の日付を表すシリアル値を戻り値として返します。
シリアル値は1990年1月1日を「1」として、そこからの通算日数の数値の事です。
2020年1月1日のシリアル値は「36526」となります。
Today関数は今日の日付をする関数ですが、他の関数と一緒に使うことで曜日を表示したり、和暦で表示させたりすることもできます。
Today関数の書式
Today()
Today関数には引数がありません。
この関数を入力するだけで、今日の日付を取得することができます。
Today関数の注意点
日付を固定したい場合には向かない
関数が入力されているセルでEnterキーを押したりすると再計算されます。
そのため請求書や納品書などの日付を固定しないといけないような時にToday関数は向きません。
日付を固定で表示したい場合は日付を入力するショートカット「Ctrl + ;(セミコロン)」を使うと便利です。
ちなみに時刻を入力するショートカットは「Ctrl + :(コロン)」です。
Today関数を使ったサンプル
Today関数を使って年齢を算出する方法
YEAR(Today())-1983
Year(Today())で関数実行時点の年を取得します。
この記事を書いているのは2019年12月なので「2019」となり、「2019-1983」で戻り値は36になります。
未来や過去の日付を表示する方法
Today() + 1
Today関数に数値を足したり引いたりすることで未来日や過去日を表示させることができます。
和暦を表示する方法
DATESTRING(TODAY())
DATESTRING関数は引数の日付を和暦にしてくれる関数です。
引数には日付のシリアル値か日付を文字列で入力します。
文字列で入力する時にはダブルクォーテーション(")で囲わないと正しい和暦が表示されません。
曜日を表示する方法
TEXT(TODAY(),"aaa")
TEXT関数は第一引数の値を第二引数の書式で表す関数です。
第一引数にToday関数をセットして第二引数に"aaa"とセットすることで曜日を取得することができます。
第二引数にセットする書式によって、曜日の表示方法が変わります。
表示形式 | 表示例 |
---|---|
aaa | 月 |
aaaa | 月曜日 |
(aaa) | (月) |
ddd | Mon |
dddd | Monday |
最後に
いかがだったでしょうか。
本日はExcel のToday関数について紹介しました。
作成した書類の作成日を表示させる時などにToday関数は便利です。
ただ請求書など日付を固定して表示したい時などにはToday 関数ではなく直接入力したほうがよい時もあります。
作成している資料によって上手く使い分けるようにしましょう。
VBAの配列で2次元配列を使用する方法
ExcelのVBAでプログラミングをする時に2次元配列を使用する機会は多いのではないでしょうか。
しかしプログラミング経験が少ない方にとっては理解しにくい変数です。
ただ使用できるようになると、プログラミングでできることの幅がかなり増えます。
2次元配列の宣言方法
Dim arrList(7,1) As String
Dim 配列名(列数,項目数) As データ型
私は配列を宣言する時によく列数と項目数の指定を間違えてしまいます。
As以降でデータ型を指定することで配列全体のデータ型を一度に指定することができます。
項目ごとにデータ型を分ける方法
変数のデータ型宣言をする時に「Variant」型で宣言をします。
Variant型はデータ格納時にデータ型が自動で決まります。
配列の要素に文字列を格納するとString型の要素になり、数値を格納するとInteger型やDouble型など数値のデータ型になります。
2次元配列を使ったVBAのサンプル
Sub ボタン1_Click() Dim i As Integer Dim arrlist() As Variant Dim MaxRow As Integer MaxRow = Cells(1, 1).End(xlDown).Row ReDim arrlist(MaxRow, 1) For i = 0 To MaxRow - 1 arrlist(i, 0) = ThisWorkbook.Worksheets("Sheet1").Cells(i + 1, 1).Value arrlist(i, 1) = ThisWorkbook.Worksheets("Sheet1").Cells(i + 1, 2).Value Next For i = 0 To MaxRow - 1 MsgBox arrlist(i, 0) & " : " & arrlist(i, 1) Next End Sub
VBAの解説
MaxRow = Cells(1, 1).End(xlDown).Row
変数MaxRowにExcelの最終行を格納します。
最終行の取得については以前紹介していますので、詳細はこちらの記事を確認してください。
ReDim arrlist(MaxRow, 1)
配列を再定義します。
列数には取得したExcelの行数をセットし、行数にはデータ行数が2行なので1をセットします。
For i = 0 To MaxRow - 1 arrlist(i, 0) = ThisWorkbook.Worksheets("Sheet1").Cells(i + 1, 1).Value arrlist(i, 1) = ThisWorkbook.Worksheets("Sheet1").Cells(i + 1, 2).Value Next
Excelの最終行まで繰り返し処理をしています。
配列の列数は動的にするため、変数「i」を使用しています。
配列の最初の行にはの「都道府県」、次の行には「県庁所在地」を格納しています。
For i = 0 To MaxRow - 1 MsgBox arrlist(i, 0) & " : " & arrlist(i, 1) Next
再度Excelの列数だけ繰り返し処理をしています。
「都道府県 : 県庁所在地」の形式でExcelの列数分メッセージボックスに出力をしています。
配列の上限値と下限値を確認する方法
配列の上限値を取得するのは「UBound」、下限値を取得するのは「LBound」を使用します。
2次元配列でこの関数を使用すると、列数の上限値や下限値を戻り値として取得できます。
UBoundとLBoundの使い方ですが、引数に配列を渡します。
MsgBox LBound(arrlist) MsgBox UBound(arrlist)
上記のサンプルでは戻り値をメッセージボックスに表示していますが、変数に格納することもできます。
最後に
いかがだったでしょうか。
本日はExcelのVBAで二次元配列を使用する方法を紹介しました。
私がプログラムを始めたばかりの頃、配列がなかなか理解できずにとても苦労しました。
ただプログラムを続けていく上では避けては通れないほどよく使われます。
配列が苦手な人はぜひこの記事を参考にしてみてください。
Excel VBAでファイル取込み!Excelファイル編
前回CSVファイルの取込み方法について紹介しました。
CSVファイルと同様に、Excelファイルで別Excel ファイルの取込みをすることがあります。
Excelファイルの取り込みはCSVとは違い、Excelオブジェクトを作成したりしないといけないため多少複雑ですが、一度覚えてしまえばそこまで難しくはありません。
Excel取込みのサンプル
Sub ボタン1_Click() Dim objBook As Excel.Application Dim objSheet As Excel.Worksheet Dim IX As Integer Set objSheet = ThisWorkbook.Worksheets("Sheet2") objSheet.Cells.Clear Set objBook = CreateObject("Excel.Application") objBook.Visible = False objBook.Application.Workbooks.Open Filename:="D:\temp\Book1.xlsx" IX = 1 Do While objBook.Cells(1, IX) <> "" objSheet.Cells(IX, 1) = objBook.Cells(IX, 1) objSheet.Cells(IX, 2) = objBook.Cells(IX, 2) objSheet.Cells(IX, 3) = objBook.Cells(IX, 3) objSheet.Cells(IX, 4) = objBook.Cells(IX, 4) objSheet.Cells(IX, 5) = objBook.Cells(IX, 5) IX = IX + 1 Loop objBook.QuitIX + 1 End Sub
サンプルの解説
Set objSheet = ThisWorkbook.Worksheets("Sheet2")
出力先のシートを変数に格納します。
今回はシート名「Sheet2」に取込んだ内容を出力します。
objSheet.Cells.Clear
Sheet2に前回取込んだデータが残っている可能性があるので、取込む前にシート全体を
クリアします。
Set objBook = CreateObject("Excel.Application")
Excelオブジェクトを作成して変数に格納します。
objBook.Visible = False
作成したExcelオブジェクトを非表示にします。
False ⇒ Trueにすると作成したExcelが画面に表示されます。
objBook.Application.Workbooks.Open Filename:="D:\temp\Book1.xlsx"
作成したExcelオブジェクトでExcelファイルを開きます。
今回はDドライブのtempフォルダにある「Book1.xlsx」ファイルを開きます。
Do While objBook.Cells(1, IX) <> ""
Do ~ Loopまでが繰り返し処理です。
Book1.xlsxファイルのA列のセルが未入力になるまで繰り返し処理をします。
objSheet.Cells(IX, 1) = objBook.Cells(IX, 1) objSheet.Cells(IX, 2) = objBook.Cells(IX, 2) objSheet.Cells(IX, 3) = objBook.Cells(IX, 3) objSheet.Cells(IX, 4) = objBook.Cells(IX, 4) objSheet.Cells(IX, 5) = objBook.Cells(IX, 5)
繰り返し処理の内容です。
VBAを実行しているExcelブックのSheet2にBook1.xlsxファイルの内容を記述していきます。
繰り返し処理の前に変数IXに「1」を格納しているので、繰り返し処理の最初はSheet2のセル1行目にBook1.xlsxの1行目の内容を記述していきます。
IX = IX + 1
変数IXをカウントアップします。
この処理をすることで次の行を参照することができます。
objBook.Quit
書き込み処理が終了したので、Book1.xlsxファイルを閉じます。
この処理をしないとExcelファイルがずっと開いている状態になり、手動で開いた時に読取り専用でしか開けなくなってしまいます。
最後に
いかがだったでしょうか。
本日はExcelファイルで別Excelを開いて内容を転記するVBAを紹介しました。
今回は単純に転記するVBAでしたが、繰り返し処理にIf文を書くことで取込むデータを選択することもできます。
サンプルをコピーして色々試してみてください。
Excel VBAでファイル取込み!CSVファイル編
こんばんは。
nanana-blog管理人のナナナです。
ブログを訪問し記事を読んでいただきありがとうございます。
会社の仕事でCSVファイルをExcelに取込んで処理をする機会は多いのではないでしょうか。
定型業務であれば同じファイル形式のなのでVBAで取込み処理を作成しておくと時間短縮になります。
本日はExcel VBAでCSVファイルを取り込むサンプルを紹介します。
CSVファイルを取り込むサンプルVBA
Excelにボタンを作成して、ボタンを押すと特定のCSVファイルの内容をExcelに取込むVBAプログラムのサンプルです。
Sub ボタン1_Click() Dim intFF As Integer Dim strData As String Dim arrData As Variant Dim IX As Long Dim checkFile As String Dim SorceFilePath As String SorceFilePath = "D:\temp\Dep.csv" checkFile = Dir(SorceFilePath) If checkFile = "" Then MsgBox "指定したファイルが存在しません。" Exit Sub End If intFF = FreeFile IX = 1 Open SorceFilePath For Input As #intFF Do While Not EOF(intFF) Line Input #intFF, strData strData = Replace(strData, """", "") arrData = Split(strData, ",") ThisWorkbook.Worksheets("Sheet2").Cells(IX, 1) = arrData(0) ThisWorkbook.Worksheets("Sheet2").Cells(IX, 2) = arrData(1) ThisWorkbook.Worksheets("Sheet2").Cells(IX, 3) = arrData(2) IX = IX + 1 Loop Close #intFF End Sub
VBAの解説
SorceFilePath = "D:\temp\Dep.csv"
変数「SorceFilePath」に取込みたいCSVファイルのパスを格納します。
サンプルではDドライブのtempフォルダにある「Dep.csv」ファイルを取込みます。
checkFile = Dir(SorceFilePath)
Dir関数を使用して取り込みファイルが存在しているかを確認しています。
Dir関数はファイルが存在していると戻り値がファイル名で、存在していないと戻り値が「""(空文字)」になります。
If checkFile = "" Then MsgBox "指定したファイルが存在しません。" Exit Sub End If
Dir関数の戻り値が空文字だった場合は、メッセージを表示させて処理を終了します。
intFF = FreeFile
Openメソッドで使用するファイル番号を取得します。
Open SorceFilePath For Input As #intFF
Openメソッドを使用してDep.csvファイルを開きます。
Inputの部分には他にも以下のような値を入れることができます。
値 | 説明 |
---|---|
Append | 追記モード |
Binary | バイナリーモード |
Input | 読取りモード |
Output | 上書きモード |
Random | ランダムアクセスモード |
Do While Not EOF(intFF)
取り込みファイルの最終行までDoからLoop間の処理を繰り返し処理します。
Line Input #intFF, strData
取込みファイルのを行単位で関数strDataへ格納します。
strData = Replace(strData, """", "")
サンプルのCSVはダブルクォーテーション(”)で値を囲んでいるため、Replace関数を使ってダブルクォーテーション削除します。
arrData = Split(strData, ",")
Split関数を使って各項目を配列に格納します。
項目間の区切り文字はカンマ(,)なのでSplit関数の第2引数にカンマを指定します。
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 1) = arrData(0) ThisWorkbook.Worksheets("Sheet2").Cells(IX, 2) = arrData(1) ThisWorkbook.Worksheets("Sheet2").Cells(IX, 3) = arrData(2)
Excelに取得した値を追記していきます。
VBAを実行しているブックのシート名「Sheet2」に値を入力していきます。
IXにはセルの行番号が入ります。
サンプルファイルの19行目でIX=1と指定しているので、1行目から順番に値を追記していきます。
IX = IX + 1
次のデータのためにIXの値に1を足します。
Close #intFF
全てのデータを追記し終わったら、ファイルを閉じます。
処理結果は次のようになります。
最後に
いかがだったでしょうか。
本日はExcelのVBAでCSVファイルを取り込む手順を紹介しました。
システムからデータを出力する時、ファイル形式がCSVであることは多いです。
同じCSVを何度も取り込む場合はVBAを作成しておくと時間短縮になるので参考にしてみてください。
【Excel VBA】最終行を取得する方法!空白を含むデータにも対応
こんばんは。
nanana-blog管理人のナナナです。
ブログを訪問し記事を読んでいただきありがとうございます。
ExcelのVBAを使用していると最終行を取得したい場面があります。
UsedRangeプロパティを使用すると、最終行を取得することができます。
しかしUsedRangeだけでは、空白セルを含むデータの最終行を取得することが出来ません。
本日は空白セルを含んだデータでも最終行を取得することが出来るVBAの書き方を紹介します。
空白セルを含むデータの最終行を調べる方法
Endプロパティを使用する
ワークシートの最終行から上に向かって値の入力されているセルへ移動します。
画像のような7行目に空白がある場合、上から下へ移動すると6行目が最終行と認識されてしまいますが、下から上へ移動すると8行目が最終行になります。
Sub ボタン1_Click() Dim MaxRow As Double Dim MaxRowNumber As Double MaxRow = Rows.Count MaxRowNumber = Cells(MaxRow, 1).End(xlUp).Row MsgBox MaxRowNumber End Sub
解説
MaxRow = Rows.Count
Row.Countでワークシートの最終行を取得して変数MaxRowへ格納します。
ちなみにExcel2003の最終行は「65,536行」で、現時点で最新バージョンのExcel2019の最終行は「1,048,576行」です。
MaxRowNumber = Cells(MaxRow, 1).End(xlUp).Row
Cell(MaxRow, 1)でA列の1,048,576行目を表しています。
Endプロパティの「xlUp」を使って上方向へ移動して、移動先の行数を変数MaxRowNumberへ格納しています。
他にも下方向への移動や左や右への移動を指定することができます。
定数 | 内容 |
---|---|
xlUp | 上方向への移動 |
xlDown | 下方向への移動 |
xlToLeft | 左方向への移動 |
xlToRight | 右方法への移動 |
このVBAを起動するとメッセージボックスには「8」と表示されます。
UsedRangeプロパティを使用する
Sub ボタン1_Click() Dim MaxRow As Double Dim MaxColumn As Double MaxRow = Worksheets("Sheet1").UsedRange.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row MaxColumn = Worksheets("Sheet1").UsedRange.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column MsgBox MaxRow MsgBox MaxColumn End Sub
解説
UsedRangeは非表示のセルや、セル内に値はなくても罫線が引かれていたりするセルも対象になります。
そのためUsedRangeで取得したRangeからFindプロパティを使って、最終行を探します。
まず「Worksheets("Sheet1").UsedRange」でSheet1のデータがあるセル範囲を取得します。
そしてFindプロパティを使用してUserdRangeで取得した範囲から最終行を取得していきます。
引数の1番目で「*」を使用して、値の入力されている全てのセルを対象にしています。
値が入力されているセルなので、罫線などの書式のみのセルは対象外になります。
引数の5番目で「xlByRows」を指定して検索方向を縦(列)に指定します。
検索方向を横(行)にしたい場合は「xlByColumns」を指定します。
引数6の番目で「xlprevious」を指定して検索値の最終セルを取得します。
このVBAを実行すると最初に「8」その後に「6」とメッセージが表示されます。
最後に
いかがだったでしょうか。
本日はExcelVBA最終行を取得する方法を紹介しました。
For文を使用して繰り返し処理をする場合などデータの最終行を使用することはあります。
今回掲載しているVBAはコピペをして使用できるので、ぜひ使用してください。