ビジネス一般

仕事のムダを無くそう:VBAで業務効率UP

【現役コンサルタントによる簡単業務改善】
未曾有の大不況の中生き残る為には、ますます効率的に業務をこなさなければなりません。
VBAを使って仕事のムダ/ミスを無くし、業務効率を挙げる方法を事例を交えて紹介します。
ご自分の、または所属する組織の業務効率を上げ、不況を乗り切りましょう。

全て表示する >

【VBAで業務効率UP】第2回 ExcelからExcelへのデータ集計(2/3)

2009/09/23

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  仕事のムダを無くそう:VBAで業務効率UP
   第2回 ExcelからExcelへのデータ集計(2/3) 2009/09/23 
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

■目次
 □ご挨拶
 □頭の中の整理
 □データ集計Step2 データの足し算引き算
 □データ集計Step3 各セルに対し同じ作業を繰り返す
 □アンケート
 □次回予告

■ご挨拶
こんにちわ、
TeamNo2新田です。

シルバーウィークいかがお過ごしでしょうか。
高速道路がかなりの大渋滞のようで、
お出かけになって巻き込まれてしまった方も多いのではないでしょうか。

明日からはまた仕事です。
気持ちを切り替えていきましょう。


■頭の中の整理
私が依頼を受けてマクロを作成する際に、
依頼される方の頭の中でマクロ化する工程の整理が出来ているか、が
非常に重要になってきます。

整理できていない例として、よくあるのが、
・工程の目的が明確になっていない
  これはマクロ化に限ったことではありませんが、
  工程の目的が明確になっていない為に、
  『余計な作業をやっている』/『必要な作業が抜けてしまう』
  という事態が起こります。

・複数ある目的を分解できていない
  本来なら目的Aの為の工程aと目的Bの為の工程bとなるはずが、
  目的ABの為の工程abとなってしまっている事が良くあります。
  こうなってしまうと、工程abは元の工程a・工程bよりも、
  複雑で規模の大きい工程になってしまいます。
  まずは、目的を分解し、個別のアクションに落とし込んでいく事が
  工程整理の第一歩です。

というわけで、皆様もマクロを作られる際は、
今から作るマクロの目的は何なのかをまずは明確にしてください。


■データ集計Step2 データの足し算引き算
 前回、セルからセルへのデータコピーを説明しました。
 下がそのコードです。
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Sub セルからセルへのデータコピー()
    Workbooks("aa.xls").Worksheets("bb").Cells(2, 1).Value = _
     Workbooks("dd.xls").Worksheets("ee").Cells(3, 4).Value
 End Sub
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 今回は、単にデータを移すのではなく、
 足したり引いたり組み合わせたりします。

○まずは足し算
  Cells(1, 3).Value = Cells(1, 1).Value + Cells(1, 2).Value
 これで、Cells(1, 3)にはCells(1, 1)とCells(1, 2)を足した数字が入ります。
 もちろん、Cells(1, 1)とCells(1, 2)には数字を入れておいてくださいね。

 ちなみに、今回はすべて同一のシートでの作業になりますので、
 Workbooks("〜")とWorksheets("〜")の部分は省略します。

 足し合わせる元の数は、セルの値でなくても良いです。
 Cells(1, 3).Value = 2 + 3
 とすれば、Cells(1, 3)には2+3の結果(= 5)が入ります。


○続いて引き算
  Cells(2, 3).Value = Cells(2, 1).Value - Cells(2, 2).Value
 これで、Cells(2, 3)には
 Cells(2, 1)からCells(2, 2)を引いた数字が入ります。
 後は足し算と同じです。


○掛け算・割り算 
 同じように
  Cells(3, 3).Value = Cells(3, 1).Value * Cells(3, 2).Value
  Cells(4, 3).Value = Cells(4, 1).Value / Cells(4, 2).Value
 となります。
 掛け算の記号が"×"、割り算の記号が"÷"でないことに注意してください。


○最後に文字の合成
  Cells(5, 3).Value = Cells(5, 1).Value & Cells(5, 2).Value
 となります。
 文字と文字をつなぐ場合は"&"でつなぎます。


○まとめ
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Sub データの足し算引き算()
    Cells(1, 3).Value = Cells(1, 1).Value + Cells(1, 2).Value
    Cells(2, 3).Value = Cells(2, 1).Value - Cells(2, 2).Value
    Cells(3, 3).Value = Cells(3, 1).Value * Cells(3, 2).Value
    Cells(4, 3).Value = Cells(4, 1).Value / Cells(4, 2).Value
    Cells(5, 3).Value = Cells(5, 1).Value & Cells(5, 2).Value
 End Sub
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 上記のサンプルコードを標準モジュールへ貼り付けて実行してみてください。
 その前に、セルの(1, 1)から(5, 2)まで、数字を入れるのをお忘れなく。
 実行すると、3列目に計算結果が表示されます。


■Step3 各セルに対し同じ作業を繰り返す
 この作業を始める前にしっておいて頂きたい要素が二つあります。
 それは、『変数』と『繰り返し作業』

○変数
 変数という言葉は中学・高校の数学の時間で散々聞いたと思います。
 そう、あの"x"とか"y"とか、私たちを悩ませてくれたヤツらの同類です。

 少し違うのは、中高の数学で出てきた変数は、
 その中身が何か、ということを解くのが目的だったのですが、
 マクロでは(というかプログラミングでは)
 コードを書く人間が中身を与えてあげます。

 実際にコードを書いてみると
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Sub 変数()
    Dim i As Integer
    
    i = 1
    Cells(1, 1) = i
    
    i = 2
    Cells(1, 2) = i
    Cells(i, i) = "こんにちは"
 End Sub
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
まず、一行目の
 "Dim i As Integer"
というところで、変数を"i"を宣言しています。
"宣言"というのは、
 『これからその変数を使うよ』
ということをコンピュータに伝えているわけです。


"dim"は変数宣言をするための言葉です。
その"dim"で変数を"i"を宣言し、
それが数字だと言っているのです。(= "As Integer")

"As"以降は、宣言した変数の種類を指定します。
 "As Integer"であれば、整数
 "As String"であれば、文字 
などとなります。
他にも種類はたくさんありますが、
何も書かず、"Dim i"だけで済ますことも出来ます。
この場合、"i"はバリアント型と呼ばれる、
『何でも入る変数』になります。

変数の種類を何にすればよいかわからない場合は
バリアント型でもかまいません。

○繰り返し作業
上の"変数i"を使って『繰り返しの作業』をコンピュータにやらせます。
コードは以下のようになります。

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Sub 繰り返し作業()
    Dim i As Integer '1
    
    i = 1 '2
    Do While i<10 '3
        Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value '4
        i = i + 1 '5
    Loop
 End Sub
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上から見ていきますと
1.まず変数iを宣言します。

2.変数iに1を代入します。

3.ここが今回のキモになります。
  この"Do While ・・・ 〜 Loop" というコードは
  その間にあるコードを繰り返しなさい、という命令になります。
  上の例では
    Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value
    i = i + 1
  の部分を繰り返すことになります。

  "Do"の後ろの"While i<10"は
  "iが10より小さいという条件を
   満たしている間は繰り返しを続行する"という意味です。

  つまり、上の例では
  iが10より小さい間は、
    Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value
    i = i + 1
  を繰り返す、という命令になっています。

4.ここはStep2でやった足し算です。
  ただセルの行の指定が"i"になっています。
  そのため、iが増えていくと、
  対象となるセルもそれに応じた行のセルになるわけです。

5.iの値にi + 1を代入しています。
  数学の方程式の考え方からすると違和感があるのですが、
  ここの"="は"等しい"という意味ではなく、
  "代入"の意味だと考えてください。
  こうする事で、繰り返しが一回終わるたびに
  "i"が一つずつ増えていくわけです。

Excelシートの1列目、2列目に数字を記入して、
上のマクロを実行してみてください。
3行目に結果が記入されるはずです。

今回は繰り返す内容を
 『Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value』
にしましたが、
ここは他のものでもかまいません。
いろいろご自分で試してみるといいと思います。

また、繰り返し文の書き方は他にもあるのですが、
それはまた別の機会にご紹介いたします。

■アンケート
「仕事のムダを無くそう:VBAで業務効率UP」第2回目いかがだったでしょうか。
このメルマガを良いものにしていくため、
また、読者の皆様の業務効率を上げるため、
アンケートに答えていただければ幸いです。

以下の文をコピーしてメール本文へ貼り付け、
TeamNo2@live.jpまでお送りください。

----------------------------------------------------------------------
1.メルマガの内容はどうでしたか?
  以下の中から当てはまるものを選んでください。
  回答:( )

 a.内容がむずかしい  b.内容が簡単すぎる   c.文章が読みにくい
 d.実務的な内容を増やして欲しい  e.マクロの基礎的な内容の説明が欲しい
 f.その他(              )

2.今後、このメルマガで取り上げて欲しいテーマがあれば教えてください。
 (         )

3.マクロに関して悩んでいる事があれば教えてください。
 回答:( )

 a.どの作業をマクロ化すればよいかわからない
 b.どんなマクロを作ればよいかわからない
 c.作りたいマクロを実現する為のコードがわからない

4.作業をマクロ化したいソフトを教えてください。
 回答:( )

 a.Microsoft Excel  b.Microsoft PowerPoint  c.Microsoft Word
 d.Microsoft Access  e.秀丸エディタ  f.CATIA V5
 g.その他(       )

5.「仕事のムダを無くそう:VBAで業務効率UP」への感想を教えてください。
(                                   )

6.あなたの性別・年齢・ご職業を教えてください。(書けるものだけで結構です)
 ・性別(  )
 ・年齢(  )
 ・職業(  )
----------------------------------------------------------------------

また、
 ・こんなマクロを作りたいが、どうすればいいかわからない
 ・こんな作業を効率化したいのだが、どうすればいいかわからない
という相談も受け付けております。
以下のフォーマットでTeamNo2@live.jpまでお送りください。
----------------------------------------------------------------------
1.今、どういったことに悩まれていますか。
  回答:( )

 a.作業を効率化したいのだが、どうすればいいかわからない
 b.マクロを作りたいが、どうすればいいかわからない

2.対象となるソフトウェアを教えてください。
  回答:( )

 a.Microsoft Excel  b.Microsoft PowerPoint  c.Microsoft Word
 d.Microsoft Access  e.秀丸エディタ  f.CATIA V5
 g.手作業 h.その他(       )

3.作業の詳細を教えてください。
  回答:(                                                        )
----------------------------------------------------------------------

■次回予告(09/09/30)
   次回は『毎週月曜日に10枚のエクセルファイルから情報を集計する』の
   マクロ化の最後のステップです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  仕事のムダを無くそう:VBAで業務効率UP
   ~すべての人のNo.2に~ TeamNo2 発行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

規約に同意してこのメルマガに登録/解除する

メルマガ情報

創刊日:2009-09-08  
最終発行日:  
発行周期:週刊  
Score!: - 点   

コメント一覧コメントを書く

この記事にコメントを書く

上の画像で表示されている文字を半角英数で入力してください。

※コメントの内容はこのページに公開されます。発行者さんだけが閲覧できるものではありません。 コメントの投稿時は投稿者規約への同意が必要です。

  • コメントはありません。