軽量な電動自転車のおすすめは?タイプ別に紹介

自転車 男性

電動アシスト自転車は重いですよね。

電動アシスト自転車が倒れてしまった時、力の弱い女性や腰痛持ちの方は持ち上げるのは大変です。

でも電動アシスト自転車は坂道や重い荷物を載せて走るときに便利なので、一度乗ってしまうと手放せなくなってしまいます。

本日はそんな方々におすすめな軽量の電動アシスト自転車を紹介します。
 

 

 
 

 

シティータイプの軽量電動アシスト自転車

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

 

 

最後に

いかがだったでしょうか。

タイプ別に軽量の電動アシスト自転車を紹介しました。

 

用途によって購入するタイプや重要視する機能が変わってきます。

ぜひ自分に合った電動自転車を探してみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 
 

電動アシスト自転車の部品にも寿命があるのか

古い電動自転車



電動自転車に寿命はあるのでしょうか。

電動自転車を販売しているメーカーのホームページを確認しても書いていないため分かりませんが、部品に関しては寿命があります。

 

 
 

 

電動自転車の部品の寿命はどのくらいなのか

バッテリーの寿命

最近発売になる電動自転車のバッテリーはリチウムイオン電池が多く、700 ~ 900回の放充電で購入時の半分の量になると言われています。

走行距離が著しく短くなってきたらバッテリーの寿命なので、新しいバッテリーと交換したほうが良いでしょう。

 

またバッテリーは経年劣化をするので、使用頻度が低くても劣化していきます。

1年に数えるくらいしか電動自転車に乗らなくても劣化していきますので、バッテリーの負荷が少ない使用方法や保管方法でバッテリーの寿命を延ばしましょう。

 

チェーンの寿命

チェーンは走行時に強く引っ張られるため、走行距離が長くなればなるほど伸びてきてしまいます。

 

一般的に3,000 ~ 5,000kmの走行がチェーンの交換時期と言われていますが、累積走行距離が表示されるような電動自転車はなかなかありません。

そのため、以下のような症状が現れたらチェーンを交換するタイミングだと考えてください。

 

  • チェーンが頻繁に外れる
  • 自転車のペダルをつよっく踏み込んだ時にチェーンが外れるような感覚がある
  • ギアチェンジがスムーズに出来ない

 

チェーンが伸びた状態でも走ることはできますが、他の部品を削ってしまいその部品の寿命を短くしてしまいます。

症状が現れたら早めに交換するようにしましょう。

 

タイヤの寿命

電動自転車に限らず道を走っているとタイヤの溝が段々なくなってきます。

道の状態や自転車に乗っている荷物や子供の重さによって溝の減り具合が変わってきますが、年に1度はタイヤの溝を確認し、溝が減ってきたと思ったらタイヤの交換をしましょう。

 

ブレーキの寿命

自転車のブレーキには「ブレーキシュー」というタイヤを挟む部分と「ブレーキワイヤー」というブレーキレバーを握った力をブレーキに伝える部分があります。

 

ブレーキシューはブレーキをかけるたびにタイヤとの摩擦ですり減っていきます。

またブレーキワイヤーは摩擦と経年劣化で切れてしまう可能性があります。

ブレーキワイヤーが切れてしまうとブレーキが効かなくなり、最悪の場合事故に遭ってしまいます。

自分でブレーキシューやブレーキワイヤーの状態を確認するのは難しいと思うので、年に1度は電動自転車を購入したお店やメンテナンスをしてくれるお店で確認をしてもらいましょう。

 

電動自転車を長く使用するためには

バッテリー

バッテリーの充電の回数が増えればその分劣化していくので、まずはバッテリーの充電回数を減らす工夫をしましょう。

我が家では15%を切った位を目安に充電をしています。

 

また電動自転車はこぎ出しが一番負荷がかかりやすいため、ギアを一番軽くしておくと受けるアシストが減りバッテリーを節約することができます。

 

タイヤ

自転車の空気圧が減るとスピードが出にくくなり、バッテリーの消耗も激しくなります。

月に一度は空気圧を確認するようにしましょう。 

チェーン

チェーンに潤滑油をさすことで走行時のチェーンの動きがスムーズになったり、錆を防止したりすることができます。

 

また雨にぬれるとチェーンが錆びてしまう原因になるので、雨に濡れない場所に駐車したり自転車カバーをかけて濡れないようにするなどの工夫をしましょう。

 

 

最後に

いかがだったでしょうか。

 せっかく高いお金を出して買った電動自転車なので、できるだけ長い期間使いたいですよね。

できるだけ長く使えるように、年に1度くらいはメンテナンスをしてみてください。

 

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com

 
 

電動自転車のバッテリーだけ盗難に遭う?盗難予防とメーカー補償を紹介

女性 起こっている

電動自転車のバッテリー盗難事件が発生していたことをご存知でしょうか。

走行のアシストをしてくれるので坂道を上る時などはとても助かります。

ただバッテリーがないとアシストを受けられないので、普通の自転車より重くなり平らな道でも走るのに一苦労です。

そんな状態にならないためのバッテリー盗難予防方法や各メーカーの盗難補償について紹介します。 

 

 
 

 

電動自転車のバッテリー盗難事件が発生している

電動自転車のバッテリーだけが盗まれるという事件が過去に発生しています。

「バッテリーだけ盗んで意味があるのか?」と思われる方もいらっしゃるのではないでしょうか。

 

私も盗んでどうするのかと思っていたのですが、どうやらメルカリやYahooオークションなどインターネット上で販売していたようです。

 

 

電動自転車のバッテリー盗難を防ぐ方法

駐輪時には必ず鍵をかける

子供乗せ電動自転車などで多いのですが、自転車ロック用とバッテリーの取り外しに使う鍵が同じ自転車があります。

有料駐輪場だと安心して鍵をかけないで自転車から離れてしまうと、バッテリーが簡単に取り外せてしまいます。

電動自転車から離れる時は、たとえ少しの時間だとしても鍵をかけるようにしましょう。

 

駐輪時にバッテリーを持ち歩く

原始的な方法ですがバッテリー盗難予防としては最強の予防法です。

容量の大きいバッテリーだと持ち運ぶのは現実的ではありませんが、容量の小さいバッテリーであれば取り外して何とか持ち歩ける重量です。

 

バッテリー盗難防止用の鍵をかける

私もこの記事のためバッテリー盗難について調べていた時に知ったのですが、

バッテリー盗難防止用の鍵があります。

この鍵を付けることで簡単にはバッテリーを持ち去ることが出来なくなります。

ただ充電のためにバッテリーを外そうとする時に盗難防止用の鍵も外さないといけなくなるので、若干面倒になります。

 

 外す鍵が1つ増えても問題ないという方にはおすすめの商品です。

 

サイクルカバーをかける

自宅で保管している時は自転車が丸見えの状態よりも、サイクルカバーをしてどんな自転車があるのかが分からないため盗難に合いにくくなります。

盗難防止だけでなく雨風も防いでくれるので、カバーをかけないで保管しているよりも錆を防止することができます。

 

 

 

バッテリー盗難に対しての各メーカーの補償

3つの鍵

YAMAHA(ヤマハ)

 電動自転車本体の盗難補償はありますが、バッテリーなど本体一部のみの盗難については補償対象外となります。

バッテリーだけ盗難にあいました。盗難保険の対象になりますか? | 電動アシスト自転車 | ヤマハ発動機株式会社

 

BRIDGESTONE(ブリジストン)

 電動自転車本体の盗難補償はありますが、構成部品単体が盗難に遭った場合や、盗難車に取り付けられていたオプションパーツは対象外となります。

部品が盗難に遭ったのですが、盗難補償の対象ですか?

 

Panasonic(パナソニック)

電動自転車本体の盗難補償についての記載はホームページにありましたが、バッテリーの盗難補償については記載がありませんでした。

 

GIC(ジック)

盗難補償に関しての記載がホームページにありませんでした。

 

Daytona(デイトナ)

メーカーの盗難補償はありません。

販売店で盗難補償に加入できる場合があるので、購入時に確認が必要です。

よくある質問|お洒落な折りたたみ電動アシスト自転車DE01

 

BESV(ベスビー)

 電動自転車本体の盗難補償はありますが、バッテリーなど部品の盗難補償はありませんでした。

(保険金等を支払わない場合(免責事由) 盗難全損特約)参照

 

TSINOVA(チノーバ)

 盗難補償に関しての記載がホームページにありませんでした。

 

Benelli(ベネリー)

盗難補償に関しての記載がホームページにありませんでした。

 

AERO-LIFE(エアロライフ)

盗難補償に関しての記載がホームページにありませんでした。

 

Cyrusher(サイラッシャー)

盗難補償に関しての記載がホームページにありませんでした。

 

MIYATA(ミヤタ)

 電動自転車本体の盗難補償はありましたが、バッテリーの盗難補償はありませんでした。

MIYATA自転車 | MIYATA Care | MIYATAの「盗難補償」について

 

 

最後に

いかがだったでしょうか。

メーカーとしても自転車本体の盗難補償はしてもバッテリーなどの部品の盗難補償まではしてくれません。

バッテリーのない自転車はただの重たい自転車になってしまいます。

バッテリーの盗難に遭わないために対策をしっかりとしましょう。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 
 

子供乗せ電動自転車が安い?電動自転車を安く購入する方法

topイラスト

保育園や幼稚園の送り迎えに重宝する電動自転車。

普通の自転車よりも価格が高くて10万円以上するため、購入をためらってしまう方も多いのではないでしょうか。

そんな高価な電動自転車ですが購入の時期やちょっとした手間をかけると、10万円以下で購入できることもあります。

 

本日は子供乗せ電動自転車を安く購入する方法を紹介します。

 

 
 

 

 子供乗せ電動自転車を安く購入する方法

型落ちの電動自転車を購入

メーカーから新型の電動自転車が発売されると、旧型電動自転車は値引きされることが多いです。

メーカーのホームページを確認してみると、10月~12月にかけて新型の電動自転車が発売されていることが多いので、そのくらいのタイミングで量販店などに行ってみると型落ちの電動自転車が安く購入できます。

 

電動自転車にチャイルドシートを装着する

子供乗せではない安い電動自転車にチャイルドシートを装着することで値段を抑えることが可能です。

 

普通の電動自転車にチャイルドシートを装着する場合には注意点があります。

必ずリアの最大積載質量 を確認してください。

【最大積載質量  - チャイルドシートの重量】がチャイルドシートに乗せられる子供の体重になります。

 

中古自転車を探す

中古の電動自転車を購入すれば新品を購入するよりも安く済みます。

中古の電動自転車はインターネットで検索するとたくさん出てくるので、掘り出し物があるかもしれません。

 

セールの時期を狙う

年末年始や期末のセール時期になると、電動自転車がセール対象品になり通常よりも安く購入することができます。

 

電動自転車を購入する時の注意点

子供乗せ電動自転車 イラスト

購入したい車種や色がないかもしれない

型落ちの自転車や中古の自転車はその時点で売られているものしかないので、好みの車種や色があるとは限りません。

 

我が家はビックカメラで型落ちの電動自転車を購入しました。

私が購入した時には人気のありそうな色は全て売り切れていて、3種類ほどしか残っていませんでした。

 

購入後のメンテナンスの事を考える

電動自転車は突然充電できなくなることがあります。

そんな時近くに見てくれるお店があるとかなり助かります。

我が家ではヤマハのpas babbyを購入しましたが、2年経たずにバッテリーの充電ができなくなりました。

しかし歩いて5分程度の所にヤマハの販売店があり、そこで対応してもらえたためすぐに使用できるようになりました。

 

電動自転車を購入するお店が自宅近くにあればそこでメンテナンスをしてもらえますが、そうでない場合はメンテナンスしてもらえそうなお店を自分で見つける必要があります。

 

購入前に自宅周辺でメンテナンスをしてもらえそうなお店を確認しておくことをおすすめします。

 

中古の場合はバッテリーの寿命を考える

中古の自転車は新品に比べてバッテリーの寿命が短いです。

最近発売されている電動自転車のバッテリーはリチウムイオン電池です。

リチウムイオン電池は700~900回の充放電で購入時の半分の容量になると言われています。

購入時点でどのくらい充放電されているかでバッテリーの寿命が変わってきます。

 

 

最後に

いかがだったでしょうか。

電動自転車は乗る頻度が高いので、値段だけでなく乗り心地も重要です。

販売店によっては試乗させてくれるところもあるので、購入前にはぜひ試乗をして乗り心地も確認してみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 
 

VBAのIf文で色々な論理演算子(Not、And、Or)を使ってみよう

デスクトップイラスト

Excel VBAでプログラミングをしていると条件によって処理を分けたい時が出てきます。

そんな時にはIf文を使うことが多いと思いのではないでしょうか。

If文では論理演算子(Not、AND、OR)を使用することで様々な条件を指定することができます。

本日はIf文で使用する論理演算子の使い方について紹介します。 

 

 
 

 

今回使用するExcelシート

この記事では以下のExcelシートを使用します。

紹介しているVBAは全てボタンを押した時の処理になっています。

Excel シート

 

 

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文で論理演算子を使うとできることが広がるのでたくさん使いたくなりますが、一つの条件に使いすぎると分かりにくくなってしまいます。

できるだけ分かりやすい条件式になるように心がけてみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 
 

ExcelのToday関数で今日の日付や曜日を入力!和暦表示方法も紹介

Excelイラスト

ExcelのToday関数は今日の日付を表すシリアル値を戻り値として返します。

 

シリアル値は1990年1月1日を「1」として、そこからの通算日数の数値の事です。

2020年1月1日のシリアル値は「36526」となります。

 

Today関数は今日の日付をする関数ですが、他の関数と一緒に使うことで曜日を表示したり、和暦で表示させたりすることもできます。

 

 
 

 

Today関数の書式

Today()

Today関数には引数がありません。 

この関数を入力するだけで、今日の日付を取得することができます。

 

 

Today関数の注意点

日付を固定したい場合には向かない

関数が入力されているセルでEnterキーを押したりすると再計算されます。

そのため請求書や納品書などの日付を固定しないといけないような時にToday関数は向きません。

 

日付を固定で表示したい場合は日付を入力するショートカット「Ctrl + ;(セミコロン)」を使うと便利です。

 

ちなみに時刻を入力するショートカットは「Ctrl + :(コロン)」です。

 

 

Today関数を使ったサンプル

Today関数を使って年齢を算出する方法

Excel 年齢を表示

YEAR(Today())-1983

 Year(Today())で関数実行時点の年を取得します。

この記事を書いているのは2019年12月なので「2019」となり、「2019-1983」で戻り値は36になります。

 

未来や過去の日付を表示する方法

Excel 未来日

Today() + 1

Today関数に数値を足したり引いたりすることで未来日や過去日を表示させることができます。

 

和暦を表示する方法

EXCEL DATESTRING

DATESTRING(TODAY())

DATESTRING関数は引数の日付を和暦にしてくれる関数です。

 

引数には日付のシリアル値か日付を文字列で入力します。

文字列で入力する時にはダブルクォーテーション(")で囲わないと正しい和暦が表示されません。

Excel DATESTRING

 

曜日を表示する方法 

Excel 曜日

TEXT(TODAY(),"aaa")

TEXT関数は第一引数の値を第二引数の書式で表す関数です。

第一引数にToday関数をセットして第二引数に"aaa"とセットすることで曜日を取得することができます。

 

第二引数にセットする書式によって、曜日の表示方法が変わります。

表示形式 表示例
aaa
aaaa 月曜日
(aaa) (月)
ddd Mon
dddd Monday

 

 

最後に

いかがだったでしょうか。

本日はExcel のToday関数について紹介しました。

作成した書類の作成日を表示させる時などにToday関数は便利です。

ただ請求書など日付を固定して表示したい時などにはToday 関数ではなく直接入力したほうがよい時もあります。

 

作成している資料によって上手く使い分けるようにしましょう。

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 
 

VBAの配列で2次元配列を使用する方法

ディスプレイイラスト

ExcelのVBAでプログラミングをする時に2次元配列を使用する機会は多いのではないでしょうか。

しかしプログラミング経験が少ない方にとっては理解しにくい変数です。

ただ使用できるようになると、プログラミングでできることの幅がかなり増えます。

 

 
 

 

2次元配列の宣言方法

Dim arrList(7,1) As String

Dim 配列名(列数,項目数) As データ型

私は配列を宣言する時によく列数と項目数の指定を間違えてしまいます。

As以降でデータ型を指定することで配列全体のデータ型を一度に指定することができます。

 

項目ごとにデータ型を分ける方法

Excel 配列項目のデータ型

変数のデータ型宣言をする時に「Variant」型で宣言をします。

Variant型はデータ格納時にデータ型が自動で決まります。

配列の要素に文字列を格納するとString型の要素になり、数値を格納するとInteger型やDouble型など数値のデータ型になります。

 

 

2次元配列を使ったVBAのサンプル

Excel サンプルで使用したシート

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の最終行を格納します。 

最終行の取得については以前紹介していますので、詳細はこちらの記事を確認してください。

www.nanana-blog.com

 

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で二次元配列を使用する方法を紹介しました。

 

私がプログラムを始めたばかりの頃、配列がなかなか理解できずにとても苦労しました。

ただプログラムを続けていく上では避けては通れないほどよく使われます。

配列が苦手な人はぜひこの記事を参考にしてみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 
 

Excel VBAでファイル取込み!Excelファイル編

ディスプレイのイラスト

前回CSVファイルの取込み方法について紹介しました。

CSVファイルと同様に、Excelファイルで別Excel ファイルの取込みをすることがあります。

Excelファイルの取り込みはCSVとは違い、Excelオブジェクトを作成したりしないといけないため多少複雑ですが、一度覚えてしまえばそこまで難しくはありません。

 

 
 

 

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文を書くことで取込むデータを選択することもできます。

サンプルをコピーして色々試してみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

 

www.nanana-blog.com

 

 

 
 

Excel VBAでファイル取込み!CSVファイル編

ディスプレイイラスト

こんばんは。

 

nanana-blog管理人のナナナです。

 

ブログを訪問し記事を読んでいただきありがとうございます。

 

会社の仕事でCSVファイルをExcelに取込んで処理をする機会は多いのではないでしょうか。

定型業務であれば同じファイル形式のなのでVBAで取込み処理を作成しておくと時間短縮になります。

本日はExcel VBAでCSVファイルを取り込むサンプルを紹介します。

 

 

 
 

 

CSVファイルを取り込むサンプルVBA

Excelにボタンを作成して、ボタンを押すと特定のCSVファイルの内容をExcelに取込むVBAプログラムのサンプルです。

CSVファイルデータ

取込みファイル
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シート

 

 

最後に

いかがだったでしょうか。

本日はExcelのVBAでCSVファイルを取り込む手順を紹介しました。

システムからデータを出力する時、ファイル形式がCSVであることは多いです。

同じCSVを何度も取り込む場合はVBAを作成しておくと時間短縮になるので参考にしてみてください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 
 

【Excel VBA】最終行を取得する方法!空白を含むデータにも対応

パソコンのイラスト

こんばんは。

 

nanana-blog管理人のナナナです。

 

ブログを訪問し記事を読んでいただきありがとうございます。

 

ExcelのVBAを使用していると最終行を取得したい場面があります。

UsedRangeプロパティを使用すると、最終行を取得することができます。

しかしUsedRangeだけでは、空白セルを含むデータの最終行を取得することが出来ません。

本日は空白セルを含んだデータでも最終行を取得することが出来るVBAの書き方を紹介します。

 

 
 

 

空白セルを含むデータの最終行を調べる方法

Endプロパティを使用する

Excelシート

ワークシートの最終行から上に向かって値の入力されているセルへ移動します。

画像のような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」と表示されます。

Excel VBA 処理結果

 

UsedRangeプロパティを使用する

Excelワークシート

 

    
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」とメッセージが表示されます。

 

Excelワークシート

Excelワークシート



最後に

いかがだったでしょうか。

本日はExcelVBA最終行を取得する方法を紹介しました。

For文を使用して繰り返し処理をする場合などデータの最終行を使用することはあります。

今回掲載しているVBAはコピペをして使用できるので、ぜひ使用してください。

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com

 

www.nanana-blog.com