パソコンスキル教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

経理や事務職ならエクセル関数よりマクロ・VBA習得すべき!7の理由

f:id:gene320:20161231003253j:plain

・事務や経理の仕事で、ムダが多いと感じる
・マクロ使えるってすごそう!でも、なんだか難しそう…
・エクセル関数の方が使いやすそうだし、手軽に学べそう
・求人募集などに書いてある「マクロってなに?」「VBAってなに?」
・新しい仕事で、エクセルを学ぼうと思っているけど、何を学べばいい?

こんなことを考えていませんか?

パソコンスキルを高めたいと思って、エクセル関数を学ぼうと考える人がいますが、エクセル関数より、エクセルマクロ習得した方がゼッタイに得です。

そう言われても、「エクセルマクロって難易度が高そう…」、「エクセル関数の方がカンタンじゃないの?」と感じることでしょう。しかし、そんなことはありません。

たしかに、エクセル関数の方が便利な場合はあります。しかし、もしあなたがエクセルのスキルアップを考えているなら、エクセルマクロを習得した方が絶対にイイ。転職でのメリット、効率化の度合い、周囲から評価、などの面からその理由を紹介していきます。

エクセル関数より、エクセルマクロ習得が断然オトク!7つの理由

エクセルマクロVBAとは?エクセル関数とは?

まずは、エクセルマクロVBAとは何か?エクセル関数とは何か?について、紹介します。

エクセルマクロVBAとは|プログラミング言語

エクセルマクロVBAとは、カンタンに言うと、「エクセルの操作を自動化するための技術、プログラム言語」です。

この自動処理システムを使えば、あなたがエクセルなどに一つ一つ手入力で打ち込む作業をなくすことができます。

たとえば、以下は、エクセルマクロで伝票を自動作成する事例です。


300件以上の記録データから複数の伝票を自動作成

マクロVBAを使えば、エクセルを自動印刷、シートの削除、アウトルックから自動でメールを送ったりできます。

エクセル関数とは|エクセルにあらかじめ登録された計算の仕組み

エクセル関数とは、面倒な計算でも、カンタンに計算できるよう、エクセルにあらかじめ登録された計算の仕組みのことです。

例えば、10セル分の平均を求めるとき、

=(A1+B1+C1+D1+E1+F1+G1+H1+I1+J1)/10

と入力する必要があります。しかし、あらかじめ登録されたAVERAGE関数を使えば、下記の数式で、計算可能です。

=AVERAGE(A1:J1)

なお、関数は600近く存在し、使用する関数によって、使い方が異なります。

エクセル関数ではなく、エクセルマクロを覚えたほうがいい!7つの理由を

まず、7つの理由を一覧で紹介します。

項目 エクセルマクロ エクセル関数
1.出来ること ・エクセルの自動計算
・パワポを自動作成
・アウトルックからメール送信
・ウェブ情報の取得
・エクセルの自動計算
2.周囲の評価 「なにこれ!?…魔法を使っているみたい。」と言われる すごい。この人はエクセル得意なんだ!
3.習得の難易度 簡単ではない(学び方次第) sum,if程度ならカンタン。関数を組み合わせると簡単ではない
4.エクセルファイルへの負荷 マクロやVBAでは、ファイルへの負荷は少ない 関数を大量に使うと、ファイルが壊れる危険がある
5.希少価値 「プログラミング?難しそう…」と敬遠しがち→希少価値高い とっつきやすい。手軽なイメージ→希少価値低い
6.削除されるリスク VBAコードの保存先を知っているのは経験者だけ 間違ってセルを削除されると、組んだ関数が消える
7.メンテナンス VBAを書ける人がいないとメンテナンスできない 関数が複雑になるとメンテナンスできない

それでは、一つずつ詳しく紹介していきます。

理由1|「マクロ」で出来ることは「関数」より多い

項目 エクセルマクロ エクセル関数
1.出来ること ・エクセルの自動計算
・パワポを自動作成
・アウトルックからメール送信
・ウェブ情報の取得
・エクセルの自動計算

エクセルマクロとエクセル関数で、大きく違う点は、出来ることです。

エクセル関数で出来ることは、たとえばこんな内容です。

・データ集計
・報告書を自動作成

エクセル関数で、出来ることは、主にエクセルファイル内の計算+αです。つまり、エクセルという世界の中でしか、応用の幅がありません。

一方で、エクセルマクロで出来ることは、たとえば以下の内容です。

・データ集計
・報告書を自動作成
・グラフ作成
・報告書の自動印刷
・フォルダ作成
・メールの自動送信
・ウェブの情報を自動取得
・ワードの報告書を自動作成
・パワポ資料を自動作成

エクセルマクロで、出来ることは、エクセルファイル内での計算だけではありません。フォルダを作成、メール送信、ウェブ情報の取得のようなエクセルの世界を飛び越えて、さまざまなことができます。

詳しくはこちらの記事をご覧下さい。

www.fastclassinfo.com

理由2|マクロと関数では、得られる評価が異なる

項目 エクセルマクロ エクセル関数
2.周囲の評価 「なにこれ!?…魔法を使っているみたい。」と言われる すごい。この人はエクセル得意なんだ!

エクセルのスキルでよくいわれるのは
・vlookup関数
・ピボットテーブル
・マクロ・VBA
下に行くほど、レベルが高いスキルと言われる傾向にあります。

エクセル関数でvlookupを使えると、エクセルが得意そうに見えますよね。実際に、vlookup関数を使いこなせる人は、あまりいません。ですので、vlookupが使えるだけでも、「エクセルが得意」という評価をもらえます。

しかし、エクセルマクロを使いこなせるようになると、魔法を使っているみたいと、意味不明な評価を受けます。

実際に、私の知り合いは、エクセルマクロで「レポート自動作成システム」を一人で構築し、そのシステムを利用して営業部が数十億の超大型契約を取りました。。その結果、知り合いはシステム構築の実績が認められて、社内表彰を受けました。年収が200万近く上がったと喜んでいました。

このようにエクセルマクロを使えば、システムを作れてしまいます。しかし、エクセル関数ではここまではできません。ですので、出来ることの幅が異なるので、得られる評価も当然、エクセルマクロの方が高くなります。

理由3|マクロの習得と関数(複雑関数の組合せ)の習得は、同じ難易度

項目 エクセルマクロ エクセル関数
3.習得の難易度 簡単ではない(学び方次第) sum,if程度ならカンタン。関数を組み合わせると簡単ではない

エクセルマクロとエクセル関数を比べたら、エクセルマクロは習得が難しそうと思われがちです。しかし、本当にそうでしょうか?

もちろん、sum関数,if関数,vlookup関数のレベルなら、関数の方がカンタン

もちろん、sum,if,vlookup程度のエクセル関数であれば、そこまで難しくはありません。ネットの情報を見れば、その場で見よう見まねで出来るはずです。

たとえば、ifを事例に考えてみましょう。

エクセル関数のif
=IF(A1>80,“合格”,“不合格)

と一行で終わりますが、しかし、エクセルマクロは5行分の記述が必要です

エクセルマクロのif
If Range(“A1”).Value > 80 Then
Range(“B1”).Value = “合格” Then
Else
Range(“B1”).Value = “不合格” Then
End If

ですので、sum関数,if関数,vlookup関数くらいであれば、関数の方が簡単と言えます。

関数を組み合わせるとなると、マクロも関数も同じ難易度

しかし、本気で業務効率化を考えたとき、sum,if,vlookupレベルのエクセル関数では足りません。それこそ、以下のような複雑な関数を組まないと、効率化の効果が見られないことが多いです。

=IFERROR(VLOOKUP($I$3&“-”&$C8,在庫入出記録!$C:$Q,MATCH(E$6,在庫入出記録!$C$4:$Q$4,0),0),“”)

もし、この複雑な関数をできるようになるなら、エクセルマクロとエクセル関数で、難易度はあまり変わりません。

たとえば、以下の画像のように

f:id:gene320:20170624020529p:plain

①で記載されている氏名を
②のように分離するとします

エクセル関数を使うと

D2~D7に
=LEFT(SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”),FIND(“ ”,SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”)))

E2~E7には、
=MID(SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”),FIND(“ ”,SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”))+1,100)

と入れ込む必要があります。

同じことをエクセルマクロで実行しようとすると、

Sub step3()
Dim kugiri,i As Long
Dim namae As String
    For i = 2 To 7
        namae = Trim(Range("B" & i).Value)
        namae = Replace(namae, "/", " ")
        namae = Replace(namae, " ","")
        kugiri = InStr(myonam, " ")
        Range("C" & i).Value = Left(namae, kugiri - 1)
        Range("D" & i).Value = Mid(namae, kugiri + 1)
    Next
End Sub

12行で書けます。

エクセルマクロとエクセル関数では、「記載する量」や「式のややこしさ」は、同じくらいです。このようにエクセル関数はカンタン、マクロはムズカシイと思われがちですが、必ずしもそうではありません。

つまり、効率化したい内容のレベルが高ければ高いほど、それを実現するためのマクロや関数の難易度は上がります。

マクロを習得すれば、できることの幅が広がる

すでに書いたとおり、エクセル関数でできないことでも、マクロなら可能です。

関数を組み合わせて、複雑な計算式を作るくらいなら、マクロを学んで、より高いレベルの効率化をできるようになる方が、絶対にお得です。周囲からの評価も明らかに異なりますし、転職にもはるかに有利になります。

理由4|エクセル関数はファイルへの負荷が大きく、壊れやすくなる

項目 エクセルマクロ エクセル関数
4.エクセルファイルへの負荷 マクロやVBAでは、ファイルへの負荷は少ない 関数を大量に使うと、ファイルが壊れる危険がある

エクセル関数を使っていて、こんな式を見たことがありませんか?

=IFERROR(VLOOKUP($I$3&“-”&$C8,在庫入出記録!$C:$Q,MATCH(E$6,在庫入出記録!$C$4:$Q$4,0),0),“”)

このような式が、エクセルのセルの一つ一つに入力されている場合、エクセルファイルは、かなり重くなります。たしかにデータ数が100行程度であれば、影響は少ないです。しかし、200行,300行とデータが増えると、エクセルファイルへの負荷が大きくなります。

エクセルファイルへの負荷が大きくなると、どうなるか?

エクセルファイルの処理速度が遅くなり、エラーが出て、強制終了の頻度が増え、最悪の場合、ファイルが壊れます。せっかく蓄積したデータが壊れたら、かなりマズイ状況になります。

こちらの記事でも紹介していますが、エクセルの動作が重くなる原因の一つとして、エクセル関数の使いすぎがあります。

www.fastclassinfo.com

しかし、エクセルマクロVBAを使えば、ファイルへの負荷はほとんどありません。ですので、ファイルが壊れる危険も少ないです。

理由5|マクロは希少価値が高い

項目 エクセルマクロ エクセル関数
5.希少価値 「プログラミング?難しそう…」と敬遠しがち→希少価値高い とっつきやすい。手軽なイメージ→希少価値低い

エクセル関数は、セルへの直接入力できるので、扱いがカンタンです。さらにsum関数やif関数といったエクセル関数は、なじみがある方が多いので、とっつきやすい=カンタンそう。そんなイメージがあります。

一方で、マクロを使用するには、開発タブをリボンに追加して、Visual Basicを開いて、標準モジュールを開いて・・・と、マクロを使うまでに、なじみのない操作が必要です。なんとなく、難しそう…と思われがちです。

しかし、だからこそ、マクロを使えると希少価値がグンと上がります。実際、以前に私が所属していた会社では、部署に50人いたのですが、エクセル関数を使える人は、レベルの差はありますが、5-10人程度。一方で、マクロを使える人は、僕一人でした。

実際にマクロで、仕事を効率化すると、あとで自分の仕事を助けてもらえました。自分の不得意な分野を人に頼みやすくなりました。

理由6|「関数」は誤って消される危険があるが、マクロは消されない

項目 エクセルマクロ エクセル関数
6.削除されるリスク VBAコードの保存先を知っているのは経験者だけ 間違ってセルを削除されると、組んだ関数が消える

エクセル関数は、セルに直接記述しますよね?これは、関数のメリットでもあり、デメリットでもあります。

セルへの直接記入は、カンタンに関数を組むことができるメリットがありますが、ほかの人がミスタイプしたら、カンタンに消えてしまうというデメリットもあります。

実際に「複雑な関数を組んだのに、間違って消されてしまって、誰も元通りにできなくなった…」と嘆いている方とお話したことがあります。

しかし、エクセルマクロの場合、間違って消される可能性はほとんどありません。なぜなら、VBEで管理するため、マクロを知らない人は、マクロがどこに保管されているのかすら分からないからです。ですので、間違って消されることはないと言えます。もちろん、方法を理解すれば、誰でも削除できます。

ただ、関数には間違って消してしまう…というリスクがあります。

理由7|「複雑な関数」と「マクロ」は両方メンテナンスが難しい

項目 エクセルマクロ エクセル関数
7.メンテナンス VBAを書ける人がいないとメンテナンスできない 関数が複雑になるとメンテナンスできない

「理由3」でも記載しましたが、メンテナンスについては、

マクロ
そもそも使える人が少ないので、メンテナンスが難しい

関数
簡単な関数(sum,if,vlookup程度)であれば、メンテナンスは可能
複雑な関数はメンテナンスは難しい

たとえば、複雑なエクセル関数の例として、以下の関数をメンテナンスするとします。

D2~D7に
=LEFT(SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”),FIND(“ ”,SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”)))

E2~E7には、
=MID(SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”),FIND(“ ”,SUBSTITUTE(SUBSTITUTE(TRIM(B2),“/”,“ ”),“ ”,“ ”))+1,100)

“ / , ) という記号が多すぎて、何をどう直せばいいのか分かりません。横に伸びているので、見づらいです。さらに、どんな関数を使うのが適切か?を調べる必要もあります。メンテナンスは大変です。

同じ場合をエクセルマクロで考えてみると、

Sub step3()
Dim kugiri,i As Long
Dim namae As String
    For i = 2 To 7
        namae = Trim(Range("B" & i).Value)
        namae = Replace(namae, "/", " ")
        namae = Replace(namae, " ","")
        kugiri = InStr(myonam, " ")
        Range("C" & i).Value = Left(namae, kugiri - 1)
        Range("D" & i).Value = Mid(namae, kugiri + 1)
    Next
End Sub

タテに並んでいるので、関数よりは見やすいです。

また、マクロの場合、間違った部分が、ハイライトされる機能があるので、どこが間違っているかはカンタンに見分けが付きます。

しかし、VBAのキホンを知らないと、怖くてメンテナンスしようとする気すら起きないのが、初心者の正直なところでしょう。

まとめると、カンタンな関数なら、メンテナンスはカンタンです。しかし、複雑な関数やマクロをメンテナンスするのは、どちらも厄介です。ただ、マクロには誤記があれば、ハイライトしてくれるので、修正しやすいです。

エクセルマクロを習得すれば、エクセル関数も分かる

エクセルマクロの習得のいい点は、マクロが理解できると、エクセル関数が自ずと理解できるようになることです。ちなみに、関数を習得しても、マクロを習得することはできません。

なぜエクセル関数を自ずと理解できるのかというと、エクセルマクロを学べば、エクセルの原理原則が分かるからです。

たとえば、vlookupというエクセル関数があります。そして、引数に指定している値は、以下の通りです。

=VLOOKUP(検索値, 範囲, 列番号, 検索の型)

この上の式ですが、マクロを理解していると、検索値, 範囲, 列番号を準備して一致するものを取得すればいいんだなと、だいたい予測がたちます。なお、「検索の型」は不要だと分かります。この予測ができるので、あとはウェブで調べれば、すぐにvlookupを理解できます。

このように、エクセルの原理原則が理解できるので、エクセル関数もカンタンに理解できますし、ピボットテーブルやソルバー解析といったエクセルの上級テクニックも理解が容易になります。

エクセル関数にも使いどころはある

ここまで、エクセルマクロVBAを覚える方が断然メリットが多いことはお伝えしてきました。ただし、エクセル関数を利用した方がいい場合もあります。それは

・ササッと合計値だけ調べたい
・条件と合致するセルの数を調べたい

こんなときは、エクセル関数で書いてササッと終わらせたほうがラクです。なぜなら、以下のようにエクセルに1行書くだけでいいからです。、

=SUM(A1:A10)
=COUNTIF(A1:A24,A27)

しかし、こんな仕事ばかりではありません。面倒な仕事は、関数一つで完結することはありません。もし、複数のエクセル関数を利用する必要があるなら、エクセルマクロを利用した方がラクです。

もちろん、あなたの仕事が

・エクセル作業がほとんどない
・現場仕事がメイン

上記のように、エクセル作業がない場合は、確かに不要かもしれません。ただし、パソコンを使う業務であれば、エクセルを使わないなんてことはまずありません。

もし、それでも「エクセル関数だけで十分!」と考えているのであれば、こちらの記事を読んでみてください。エクセルマクロによる改善の度合いに驚きますよ。

www.fastclassinfo.com

VBAスキルがあれば、パソコンで在宅ワークできる

VBAやマクロを使えるスキルがあれば、在宅でも仕事が可能です。最近では、ランサーズやクラウドワークスのようなクラウドソーシングと呼ばれるウェブでお仕事を受注できます。

クラウドソーシングを利用して、在宅で仕事ができれば、

・育児休暇中の時間を有効活用
・主婦でありながら、在宅で仕事ができる
・自宅に帰ってから、土日祝日を利用して稼ぐ

VBAやマクロができるなら、副収入を得ることも可能です。クラウドソーシングで、VBAの仕事となると、1万~5万の仕事もあります。しかし、エクセル関数では、スキルとしてほとんど評価されません。

VBAが使えると、仕事の信頼感が高まる!

VBAの仕事でなくても、パソコンスキルを利用したお仕事の受注も有利になります。

たとえば、私はランサーズやクラウドワークスを、仕事をお願いする立場で利用したことがあります。パソコンでのも文字入力の仕事をお願いしたのですが、「VBAやマクロが使える人」と「エクセルやワードを使える人」のどちらに依頼するか迷いました。

最終的に、多少単価が高かったのですが、「VBAやマクロが使える人」に仕事をお願いしました。なぜなら、安心して仕事を依頼できると思ったからです。「エクセルできます」とか、「ワード使えます」といった方より、「VBAの経験がある」と書かれると、それだけで、パソコン全般のお仕事に対して、信頼感が増します。

TOEIC900の人に英語をお願いするほうが安心感があるのと同様に、マクロやVBAができる人に、パソコン仕事をお願いする方が安心感がありますよね。

エクセル関数よりマクロを学ぶほうがおトク!

関数とマクロの違いについて、紹介してきました。いかがだったでしょうか?

まとめると、

エクセル関数はカンタンに見えるが、希少価値が低い。エクセルマクロなら、希少価値が高く、実力も断然上。でも、マクロも関数(複数式の組合せ)の難易度はどちらも同じくらい。
マクロは関数より、出来ることが多いし、消えるリスクが少ない。習得するなら、マクロの方がおトク。

習得するなら、エクセルマクロをオススメします。実際に、習得した今でも、この選択は正しかったと言えます。

ただ、私も最初はエクセル関数すら、まともに分からず、苦労しました。インターネットでcountifを調べて、なんとか使えるくらい…そんなレベルでした。しかし、調べながら、マクロの存在を知り、少しずつレベルアップしていきました。そして、いつのまにか、エクセルマクロで年間100時間以上の業務効率化を行い、教える側になりました。一番大変だったのは、最初の一歩でした。一歩を踏み出した後は、早かったのを覚えています。

www.fastclassinfo.com

もし何から実践すればいいのか分からない・・・というのであれば、書店やamazonで本を探すのもいいですし、身近にいるエクセル得意な人に質問してみるのもいいでしょう。私のオススメは、こちらの無料オンライン動画です。これを見れば、簡単なマクロなら作れるようになります。無料動画ですので、経済的にもやさしいですし、時間も節約できます。

しかし、何より大切なことは、あなた自身がこれだ!と思えるかどうかです。ぜひピンとくるものを探してみてくださいね。

「エクセルマクロ」について、もっと知りたいなら

www.fastclassinfo.com