3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

自力で考え抜いて、部品を組み合わせてなんとかすること – Excelマクロ・VBA

2012年9月4日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly
エクセルマクロ達人養成塾塾長ブログ-杜王町JOJO展プレミアムチケット
杜王町JOJO展プレミアムチケット。チケットなしで乗り込んだのですが、どうにかなりました。
エクセルマクロ達人養成塾塾長ブログ-杜王町JOJO展会場内にて
杜王町JOJO展会場内にて。会場内で唯一撮影許可されていたところ。

Excelマクロ・VBA達人養成塾 小川です。

達人養成塾のエクセルマクロ・VBA講座では、受講後も、実践的なマクロの作り方動画講座を一定期間配信しています。

達人養成塾の受講後のフォロー体制について、くわしくはこちら

今日は、ある受講生の方からの、その動画へのフィードバックとそれへの返信をご紹介。

パッと出来た割には、見本で示されたマクロの短さとの違いに、またもや驚きました。
やり方は本当に色々と考えられるのですね。

一応、僕の考えたモノを載せておきます。

'[3]
Sub test()
    Dim cel
    Dim eki
    Dim sen
    Dim gyo
    For gyo = 2 To 51
    cel = Range("E" & gyo).Value
    sen = InStr(cel, "線")
    eki = InStr(cel, "駅")
        Range("H" & gyo).Value = Left(cel, sen)
        Range("I" & gyo).Value = Mid(cel, sen + 1, eki - sen)
        Range("J" & gyo).Value = Mid(cel, eki + 2)
    Next
End Sub
'[4]
Sub test1()
    Dim ku
    Dim shi
    Dim cel
    Dim gyo
    For gyo = 2 To 11
        cel = Range("C" & gyo).Value
        ku = InStr(cel, "区")
        shi = InStr(cel, "市")
        If ku > 0 Then
            Range("F" & gyo).Value = Left(cel, ku)
            Range("G" & gyo).Value = Mid(cel, ku + 1)
        Else
            Range("F" & gyo).Value = Left(cel, shi)
            Range("G" & gyo).Value = Mid(cel, shi + 1)
        End If
    Next
End Sub
'[5]
Sub test2()
    Dim sen
    Dim cel
    Dim mono
    Dim gyo
    For gyo = 2 To 11
        cel = Range("E" & gyo).Value
        mono = InStr(cel, "ル")
        If mono > 0 Then
            Range("H" & gyo).Value = Left(cel, mono)
            Range("I" & gyo).Value = Mid(cel, mono + 1)
        Else
            sen = InStr(cel, "線")
            Range("H" & gyo).Value = Left(cel, sen)
            Range("I" & gyo).Value = Mid(cel, sen + 1)
        End If
    Next
End Sub

ちなみに、それぞれどんなお題かというと。

[3]は、以下のデータで、「○○線」と「××駅」、「歩n」とに分割してH~J列に投入するというもの。


|E列 |
----------------------------------
1 行目 |路線駅名 |
----------------------------------
2 行目 |小田急線代々木八幡駅歩4|
----------------------------------
3 行目 |浅草線泉岳寺駅歩4 |
----------------------------------
4 行目 |大江戸線赤羽橋駅歩4 |
----------------------------------
5 行目 |銀座線表参道駅歩10 |
----------------------------------
6 行目 |日比谷線広尾駅歩8 |
----------------------------------
7 行目 |山手線渋谷駅歩6 |
----------------------------------
8 行目 |山手線品川駅駅歩1 |
----------------------------------
9 行目 |日比谷線広尾駅歩13 |
----------------------------------
10行目 |日比谷線神谷町駅歩6 |
----------------------------------
11行目 |千代田線赤坂駅歩3 |
----------------------------------
12行目 |世田谷線上町駅歩1 |
----------------------------------

[4], [5]は、以下のように「区」または「市」を含む住所や
「線」という文字を含まない路線があった場合、どう分割するか、
といった課題です。


|C列 |D列 |E列 |
------------------------------------------------------------------------
1 行目 |市区町名 |構造等 |路線駅名 |
------------------------------------------------------------------------
2 行目 |渋谷区代々木5丁目|RC/2/6F |小田急線代々木八幡駅歩4 |
------------------------------------------------------------------------
3 行目 |港区高輪2丁目 |RC/3/3F |浅草線泉岳寺駅歩4 |
------------------------------------------------------------------------
4 行目 |品川区東品川2丁目|RC/4/5F |東京モノレール天王洲アイル駅歩3|
------------------------------------------------------------------------
5 行目 |川越市広栄町2丁目|RC/1/9F |東武東上線川越駅歩18 |
------------------------------------------------------------------------
6 行目 |港区西麻布4丁目 |SRC/7/10F|日比谷線広尾駅歩8 |
------------------------------------------------------------------------
7 行目 |渋谷区渋谷3丁目 |RC/6/7F |山手線渋谷駅歩6 |
------------------------------------------------------------------------
8 行目 |川越市連雀町4丁目|SRC/3/9F |西武新宿線本川越駅歩8分 |
------------------------------------------------------------------------
9 行目 |渋谷区広尾3丁目 |SRC/6/9F |日比谷線広尾駅歩13 |
------------------------------------------------------------------------
10行目 |川越市松江町1丁目|RC/2/4F |西武新宿線本川越駅歩8 |
------------------------------------------------------------------------
11行目 |港区赤坂2丁目 |SRC/2/13F|千代田線赤坂駅歩3 |
------------------------------------------------------------------------

まー、それはともかく。以下は、僕から彼にした回答。

達人養成塾 小川です。こんにちは。

毎日、楽しんでいますね (^^

マクロ、ざっと拝見しました。いただいたモノでも悪くないですよ。
というか、自力で考え抜いて、部品を組み合わせてなんとかできることが
いちばん重要です。

表の中にある例外的なデータがどういう状態かによって、
ロジック(IT用語でアルゴリズムと言います)もまた変わってきます。

同じゴールに到達するにしても、やり方はいろいろあってよいですし、
いろいろ思いつく人のほうが上達は早いです。

世間でプログラミング(というか、クリエイティブを発揮して
自力で仕組みを作り上げること)のセンスがいまいち無い人
は、
どうしても、「ひとつの正解があって、それに到達すること」だけを
追い求めちゃう傾向があります。

ですが、同じデータは二度とありませんし、
同じ仕事は二度とありません。

そういうひとつひとつのケースで、
ロジックを考えて、ひとつひとつの部品を確実に
作って組み立てられるスキルが必要です。

しかし逆に言えば、そういうすべてが揃っていれば、
あとはどうにでもなる、とも言えます。


余談ですが。。そういう工夫をする気概のない人に限って、
「マクロは私の仕事には使い道がありませんでした」
とか言い出すんですよね。。

ちょっと手直しすればすぐ使えそうな状況だったりもするんですが (^^;

..ということで。
今日も、ちょっと辛口だったかもしれませんが。


お知らせというか、打診です。

ひさしぶりに、以下のセミナーやろうかと検討中です。
どれかに、ご興味おありの方、どのくらいいらっしゃいますかね。

イヤでもWindows操作とExcel操作が早くなるワークショップ
http://www.exvba.com/closed/moushikomi_winxls.php

親指シフト達人養成塾
http://www.exvba.com/oyayu/index.php

Excelデータ分析7つの上級技
http://www.exvba.com/exbunseki/index.php

今のところ実施予定日は、僕の中では以下の感じ:

イヤでもWindows操作とExcel操作が早くなるワークショップ
東京9月29日

親指シフト達人養成塾
東京9月30日、大阪11月10日

Excelデータ分析7つの上級技
東京9月30日、大阪11月10日


キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド