GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

縦方向のカレンダーの曜日を横方向にするには・・・

2011-09-20 09:24:47 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ



Q.

会議室を貸す業務で常に当月を含む3ヵ月分のカレンダーが
毎月必要になります。
サンプルでは縦に日・曜日になっていますが、このレイアウト
を横に曜日、その下に5~6行に日にちを表示できるように
(横方向のレイアウトに)マクロを組む方法を教えてください。




A.

この場合には「セルを選択する方法」の一つである Cells
というものを使うのが便利です。

この Cells については、Lesson 42に詳しくありますので、
まずはそちらをご覧ください。



Lesson 42からの抜粋↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

2)
それでは、きょうはもう一つ、今後自動集計のプログラムを作る上で便利な
「セルを選択する方法」として、次の1行をみなさんに覚えていただきたい
と思います。
++++++++++++++++++++++++++++―
Cells(1, 2).Select
++++++++++++++++++++++++++++―

これは、「絶対移動」に当たるセル選択の方法で、特長はというと、数字で
その移動位置が指定できる点です。

例えば、
Cells(1, 1).Select・・・ A1 のセルを選択する
Cells(2, 2).Select・・・ B2 のセルを選択する
Cells(2, 3).Select・・・ C2 のセルを選択する
となり、( )内の最初の数字が行番号、後の数字が列番号(A列が1、
B列が2、C列が3、・・・)を示します。

また、列名を使いなれたアルファベットで指定する形に直して
Cells(1, 1).Select → Cells(1, "A").Select
と書いてもOKです。

抜粋ここまで↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑



で、例えば

Cells(2, 1).Select・・・ A2 のセルを選択する
Cells(2, 2).Select・・・ B2 のセルを選択する
Cells(2, 3).Select・・・ C2 のセルを選択する
 ・
 ・
 ・
を示しますから、カッコ内の右側の数字とうのが、うまい具合に
まさしく曜日番号と一致しているわけです。

"日,月,火,水,木,金,土" → "1,2,3,4,5,6,7"

すなわち、

列番号 = 曜日番号

となるわけです。


これをうまく使っていけばよいですね。
また、翌月の場合も、もし次の翌月がI列から始まるとすると、

列番号 = 曜日番号+8

とすればよいだけですから、まず最初の1ヶ月分ができてしまい
さえすれば、翌月以降もこれを使えば簡単ですね。




★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  



コメント

演習問題作成中!その3

2011-09-15 17:08:29 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ


それともう一つ、

自動集計の基本勉強マクロ(Lesson33~37)から

これは、条件によって合計値を求めるというものですが、

これを条件に合うデータの個数を求めるマクロに改修する。
といった演習問題も作りました。


もうあと3個ぐらいいま作っています。





★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  

コメント

演習問題作成中!その2

2011-09-15 17:01:46 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ


それと、

バックナンバーリクエスト集の中からもう一つ、

曜日色分け1ヶ月の表を作るマクロ(Lesson24~32)を
土曜日にも色を付けて塗つぶすマクロにする。

配信では、日曜日の日にちを赤で塗るというものでしたが、

これを、土曜日も黄色に塗るマクロへ拡張するといった
演習問題です。



★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  



コメント

演習問題作成中!

2011-09-15 16:51:07 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ


今、来週開催するエクセルマクロの「初心者1日入門セミナー」
で出題する演習問題を作っているところなんですが、

バックナンバーリクエスト集の中から、

金種計算マクロ(Lesson51~56)を1円単位まで計算するマクロ
に拡張する。というものです。

配信のバックナンバーでは、10円までしか
計算をしてませんでしたので、

これに、5円と1円の計算を追加する演習問題を作りました。



★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  

コメント

今日の講座「エラーデータを捜し出す方法」

2011-09-14 08:55:14 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ


―――――――――――――――――――――――――――――――――――
◆今日の講座
―――――――――――――――――――――――――――――――――――



┏━━▼ Lesson 159         --- エラーデータの対処方法 ---

┃   ・エラーデータを捜し出す方法

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━▲


今回から「エラーデータの対処方法」と題しまして、いわゆるエラートラップ
をマクロで処理する為の基本から応用まで、数回にわたってご紹介していきた
いと思います。


今回、主に取り上げるテーマとしては、

・エラーデータの検索(エラーデータを捜し出す方法)
・エラーデータ確認表の作成(見つけたエラーを別シートに分ける方法)
・エラーデータの自動修復(見つけたエラーを自動で修復する方法)
・エラーデータの自動集計(修復したエラーの一覧を別表に残す方法)
・エラー条件の設定方法(色々なエラー条件の設定方法)

などなど予定しています。


読者の皆さんの中には、数千行、数万行(はたまた数十万行)といった大量の
データを扱ってるという方も多いかと思いますが、そのデータの中には必ずと
言っていいほど想定外といいますか、規定外のデータ(いわゆるエラーデータ)
というものが存在する場合が多いと思います。

そのエラーデータというものは、例えば、数万件のデータ中に数個あったり、
数十個、数百個ある場合もあろうかと思いますが、

大量のデータの中からそれらを捜し出し、手作業で修正したり、削除したり、
別シートに移動したり、とやるのは大変な手間の掛かる作業だと思いますので
日々そのようなエラーデータと格闘して苦労しているという方も多いのではな
いでしょうか。

そこで、今回はそうしたエラーデータに対処する方法(むろん、この講座では
いちいちそのような面倒な手作業はしませんので、「マクロで、自動で、」
です。^^ )、そのためのマクロの作り方について勉強していきます。


で、エラーと一言でいっても色々なケースがありますし、その対処方法も実に
様々なわけですが、

今連載の最終的な目標は、エラーデータを自動修復しそのエラーデータの修復
一覧表(修復前と後のデータ)を別表に出力する。というところまでを目標に、
やってみたいと思います。


当然ですが、エラーデータか?エラーデータでないか?その条件や判断基準も
実に様々です。

例えば、

・必ずゼロ以上(正の整数)になるはずデータが負の数字になっていたり、
・数字データであるはずの項目に文字データが入っていたり、
・健康診断の一覧データに身長が 15m もあることになっている社員が
 存在していたり、
・取引データの日付が1805年1月1日みたいな有り得ない日ひにちになって
 いたり、

だったりします。


これ、ちょっと知ったエクセルユーザーなら、セルの関数や入力規則(メニ
ューの [データ(D)]→[入力規則(L)] )でと考える方もいるかも知れません
が、既にサーバー等からエクセルのシート上に落としたデータに入力規則は
適用しませんし、大量のデータにいちいち関数を組み込んでいったら大変な
シートができてしまうと思いますので、

そこは地道に、検索、置換、オートフィル、ピボットテーブル、・・・etc
Excelの既存機能を駆使して面倒な手作業でやっているというケースが多い
だろうと思います。


そこでまず手始めに、今回はエラーデータを捜し出して、そこに目印の色を
塗るというマクロを作るところからやっていきます。



1)
ではまずはじめに、いつものようにマクロの記録を使ってその基となる
プログラム作りから始めます。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)

2.まず、マクロの記録を開始します。
 [ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
 → マクロの記録画面が出るのでそのまま[OK]をクリック。

3.まず、B2のセルを選択し、とりあえず 123 と打ってください。
 打ち終わったら一度[Enter]キーを押して入力モードを解除して、

4.そうしたらもう一度、B2のセルを選択し、このセルを黄色く
 塗りつぶしてください。(コマンドバーの[塗りつぶしの色(黄)]
 にて)

5.最後に、[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
 マクロの記録を終了させます。

――――――――――――――――――――――――――――+



2)
では、いま作ったプログラムの中身をのぞいてみます。
――――――――――――――――――――――――――――+
1.まず、いつもの様にプログラム用の画面を表示させます。
 [ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]

2.この画面の左上半分の[+標準モジュール]という所の+の部分を
 クリックすると、そのすぐ下に[Module1]と表示されるので、その
 [Module1]をダブルクリックします。
――――――――――――――――――――――――――――+


++++++++++++++++++++++++++++―
Sub Macro1()
'
Range("B2").Select
ActiveCell.FormulaR1C1 = "123"
Range("B2").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
++++++++++++++++++++++++++++―

(注)コメント行(うす緑色になってる部分)は省略しています。
(注)Excel2007バージョン以降ではトゥルーカラーというものが採用され
  上記のColorIndexの数字の部分(カラー番号)が大きな数字になって
  いるなどの違いがあると思いますが、それら(With ~ End With まで
  の下記の部分)の違いは気にしなくて大丈夫です。

  Excel2007以降の場合
  +++++++++++++++++++++―
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
  +++++++++++++++++++++―


これは、いつものようにこれから作るプログラムのがらを作るために、まず
処理対象とするセルに印をつけたという状態のマクロです。



3)
それでは早速、このプログラムにちょっと手を加えていきます。
――――――――――――――――――――――――――――+
1.まず、
  ActiveCell.FormulaR1C1 = "123"
 と書いてある行を
   a = ActiveCell.Value
 と書き改めてください。

2.次に、その下の
  Range("B2").Select
 という1行を下記のIF文に修正してください。
   If a < 100 Then

 ※今回プログラム中にこの Range("B2").Select という行は
  2ヶ所ありますので、ここの修正はその内の下の方だけです。
 (上の方を修正しないよう、ご注意ください。)


3.最後に、プログラム最後の行
   End Sub
 のすぐ上に、下記の1行を追加します。
   End If

 (いつものように、For文 ~ Next i までの間の4行はTABキー
  にて字下げをして(見やすくして)おいてください。)

――――――――――――――――――――――――――――+


修正した後のプログラムは下記の様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
Range("B2").Select
a = ActiveCell.Value
If a < 100 Then
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
End Sub
++++++++++++++++++++++++++++―


いま行った修正は、ある条件が当てはまる場合にセルに色を塗るというもの
です。(この場合、ある条件というのは100より小さい場合で、この時塗る色
は黄色だということになります。)



4)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、まだ何も書かかれていない空のシート
 [Sheet2]を開いてください。

2.次に、その[Sheet2]のB2のセルに 200 という数字を入力して
 ください。

3.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。

4.ではもう一度、今度は同じB2のセルを 50 という数字に打ち直して
 ください。

5.では、再び実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。
――――――――――――――――――――――――――――+


1回目は何も起こらず、2回目の実行ではB2のセルが黄色く塗つぶされればOK
ということになります。(これは単純に、1回目の実行データの 200 は条件の
100より大きく、2回目の 50 は100より小さいため(IF分の条件に合ったから)
の結果です。)



5)
それでは、もう少しこのプログラムを修正していきます。
――――――――――――――――――――――――――――+
1.プログラムの画面に戻って、まず、プログラム先頭の
   Range("B2").Select
 という行の上に、下記の2行を追加します。
   n = Cells(Rows.Count, "B").End(xlUp).Row
   For i = 2 To n

2.続けて、プログラム最後
   End Sub
 という行の上に、下記の1行を追加します。
   Next i

(そうしたら、ここもいつものようにいま追加したループの中
 For文 ~ Next i までの間の8行をTabキーを使って字下げを
 行っておいてください。)

3.最後に、
Range("B2").Select
 という行を、下記に修正します。
Range("B" & i).Select

――――――――――――――――――――――――――――+


修正した後のプログラムはつぎの様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
n = Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To n
Range("B" & i).Select
a = ActiveCell.Value
If a < 100 Then
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next i
End Sub
++++++++++++++++++++++++++++―


この辺の修正の仕方は何度もやっていますので、もうみなさんお馴染みかとは
思いますが、要するに、

ループをかぶせたらその For ~ Next の間で固定になっている数字の部分を

Range("B2").Select → Range("B" & i).Select

のように修正して、ループ変数( i とか j とか)に変えておくという、当講座
お決まりのパターンです。(ぜひこのワンパターン覚えておいてください。)



6)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、まだ何も書かかれていない空のシート
 [Sheet3]を開いてください。

2.まず、実行する前にテストデータの準備をします。
 以下のテキスト(計11行)をコピーして、セルA1の位置に
 そのまま貼り付けてください。

氏名
Aさん
Bさん
Cさん
Dさん
Eさん
Fさん
Gさん
Hさん
Iさん
Jさん


3.同様に、以下のテキスト(計11行)をコピーして、セルB1の位置に
 そのまま貼り付けてください。

身長
156
180
177
165
171
18
149
172
-56
159


4.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。

――――――――――――――――――――――――――――+


実行した結果、7行目のFさんと10行目のIさんの身長データのセルが黄色く
塗つぶされればOKということになります。


これは、世の中に身長が18センチの人やマイナスの人はいないので、そのよう
な有り得ないデータ(エラーデータ)を今回作ったマクロで見つけ出して目印
の色を塗ったという結果です。



今回はこれで終了です。
今日作ったマクロプログラムは次回もこの続きでまた使いますので、大切に
保管しておいてください。(ファイル名 "gogo159.xls" )


次回は、この見つけたエラーデータを別表に分けるといったマクロを作って
いきます。次回もお楽しみに!




★夏休みの1日でマクロ作りがマスターできる講座
<a href="http://www.wat3d.com/seminar/">エクセルマクロの「初心者サマーセミナー 2012」

  





コメント

常時9千人以上のExcelユーザーが勉強しているマクロの講座

2011-09-09 10:50:51 | お知らせ
にほんブログ村 IT技術ブログへ



当マクロ講座の開設は今から7年前、無料のメルマガ発信から
始まった講座です。

気がつくとメルマガ講座の読者数は9000人を超えていました。
これは、実にもの凄い人数です!


どれだけ凄いかと言うと、たとえば大晦日の紅白歌合戦はNHKホール
いっぱいで4000人弱の人数ですし、毎年夏休みには大勢の人が集まる
フジテレビのあのお台場合衆国での「めざましライブ」でも、野外の特設
ステージを埋め尽くす観衆の最多は8000人だそうですので、

それを超える9000人もの実に大勢のエクセルユーザーが、当講座で
マクロを勉強しているということ自体、実に驚くべき事実だとは思い
ませんか?


しかもです、

当講座の受講人数9000人は、まさに今現在の(現在進行形の)人数
ですから、過去の累計ではありません!(過去の累計でなら、受講者数
万人突破!という講座もよく目にするとは思いますが・・・)


しかもしかも、

当メルマガは、全て「まぐまぐ」から配信をしていますので、もし
いらなければ直ぐに簡単に解除してやめれるわけです。
今どき何万人、何十万人の会員がいるメルマガだって他に沢山あると
思われるかも知れませんが、それらは皆、サッと目を通すだけのただの
読み物に過ぎません。

ちゃんとした実習を伴う学習のできるスタイルのメルマガとしては、
この9000人という大勢の方々に利用していただいているという
この人数こそが、他の講座にはない”分かり易さ”と”楽しく学べる”
ということの「証し」である、と私は自負しています。

実際にじかにお教えしたセミナーの参加者からは、やさしい語り口の
親切な先生、といった評が多いのですが、どんな教え方をする講座なのか?
ということは普通の講座の教材やセミナーでは、実際に受けてみないと
分からないことだと思いますが、

当講座では、どんな勉強の仕方でマクロを学ぶのか?ということは
無料で公開しているメルマガ講座を読んでいただければ、誰にでも
事前に分かるわけです。
そのような点も、やさしく親切な講座だと評されている由縁なんです。


マクロの便利さと楽しさを知ってもらいたい。
そう思って始めた当講座も、8年目を迎えることができました。

「何時間も掛かって面倒で仕方のなかったエクセルの集計作業が、
ほんと一瞬で、まばたきする間に終わるようになったんです。」
今では、こんな嬉しいメールをたくさん頂くようになりました。


自動化、未だの方は是非、当マクロ講座でワンランク上の
Excelスキルを、皆さんと一緒に始めましょう!! 



★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  


コメント

IT業界のど真ん中に居て・・・

2011-09-07 11:05:44 | お知らせ
にほんブログ村 IT技術ブログへ



この講座は、「マクロを作ること」に特化していますから、

VBAの基本は愚か、専門用語すら勉強する機会というのは
設けていないわけなんですが、

不思議と前々から、
この講座で勉強したお陰で簡単にVBAの試験に受かった!
という人がよくいらっしゃいますが、

私自身は、あんまりIT関連の資格というもの自体に
興味がない人間ですので、

その昔は情報処理資格とかは勉強して取りましたが、
(会社に強制されて取らされたと言った方が正しいですが、、、)

もう何十年とIT業界のど真ん中に居て、回りを見渡す限りでは、

たいがい、忙しいIT業界の中で沢山資格を持っている人というのは
仕事が余り出来ないタイプの暇なSEやプログラマーだけです。



忙しい売れっ子のSEには、この世界は資格より実力次第だ!
という風潮が皆にありますので、

実務のIT現場で、「資格で評価される」ということは、
まず殆どありません。

(たぶん、今でもそれは変わらないと思いますが、
少なくとも私がバリバリのプログラマーだった時代は
正に資格より実力の世界でした。)


なので、もしプロを目指す人も、そうでない人も、

マクロは作れなければ(自動化できなければ)全く価値は無い!
これしかない訳ですから、

今後も当講座では「マクロ作り」に徹して
教えていきます。



   ↓セミナー情報↓

★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  



コメント

エクセルマクロの初心者&中級セミナーやります!

2011-09-02 06:08:19 | お知らせ
にほんブログ村 IT技術ブログへ



先月開催したエクセルマクロの夏季講習会ですが、

計5回の全日程を無事に終了いたしました。


「最近、全然セミナーやれてないなぁ~」

という反省で、


8月に入ってから夏休み前に急遽開催を決めまして

急だったので直前にメルマガでしかお知らせできなかったにも関わらず

多くの方に参加いただけまして、


ほんと連日の大変に暑い最中でしたが

遠くは九州や長野県から来ていただいた方もいて

ほんと嬉しい限りです。 



とにかく急に決めた開催でしたので

まだ本格オープン前でダンボール箱が散乱するような

狭い教室での授業とはなりましたが、


大きな教室を借りて8~10人程度でやる場合とは違って

今回の様な小じんまりとした教室で3~4人でのセミナーですと

より和気合い合いと双方向の授業ができましたので、


私としてはとても教えやすく良かったなと喜んでいますので

今後もこうした親近感のある少人数参加形のセミナーを

なるべく多くやっていきたいと思っています。




と言うわけで、、、

これに気を良くして、今月も精力的にセミナーやります!



今月9月のセミナーは、

初心者セミナー(初級1日)に加えて、

今回のご参加者から要望の多かった

ステップアップセミナー(中級半日)も!

超久々となりますが開催します。



(但し、いずれの回も会場の空いてる日(土日と祭日のみ)
の開催となりますので、今回、平日の開催はありません。)



ちなみに、初級[初]と中級[中]のレベルの目安は、

[初]・・・マクロ経験の全くない初心者・入門者の方
    (エクセルの一般操作や日本語入力ができる方)

[中]・・・初級セミナー受講経験者、またはそれと同等レベルの方
    (簡単なマクロなら自力で作れるレベルの方)

といった具合のレベル配分になっています。




なお、今回の初心者1日入門セミナーにご参加いただいた方には、


★豪華特典 「マクロの作り方講座のCD」 を


もれなくプレゼントいたしますので、

ぜひ、今回のマクロセミナーでワンランク上の

Excelスキルを身に付けてくださいね! 





★夏休みの1日でマクロ作りがマスターできる講座
エクセルマクロの「初心者サマーセミナー 2012」

  



なお大変に申し訳ないですが、次回も大阪その他

地方での開催予定はありません。m(__)m


コメント