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

左端から家を建てる大工はいない

2011年8月25日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

エクセルマクロ・VBA達人養成塾 小川です。
http://www.exvba.com/vb/index.php

昨日、あるところで、エクセルVBAについて人に教えていたときにした話。

たとえば、B列のセルB2~B11に以下のデータが並んでいる。

米子 美和
津 篤史
五日市 加奈子
静岡 威宏
呉 早希
高知 昌浩
兵庫 早希
神戸 智宏
高岡 範夫
北海 尚広

そのとき、C列、D列に、苗字、名前を分割して入れるとする。

つまり、こんな感じになる。

米子 美和,米子,美和
津 篤史,津,篤史
五日市 加奈子,五日市,加奈子
静岡 威宏,静岡,威宏
呉 早希,呉,早希
高知 昌浩,高知,昌浩
兵庫 早希,兵庫,早希
神戸 智宏,神戸,智宏
高岡 範夫,高岡,範夫
北海 尚広,北海,尚広

(便宜的に、セルの区切りをカンマで表現しています)

こういうことをするマクロを作ると、以下の感じになります。

Sub nantoka()
Dim mn As String
Dim ku As Long

Dim cnt As Long
For cnt = 2 To 11
mn = Range(“B” & cnt).Value
ku = InStr(mn, ” “)

Range(“C” & cnt).Value = Left(mn, ku – 1)
Range(“D” & cnt).Value = Mid(mn, ku + 1)
Next
End Sub

このとき。

上の行から順番に書いている人がいます。

Sub nantoka()

って書いて。

Dim mn As String

って書いて。

Dim ku As Long

って書いて。

って書いて。

Dim cnt As Long

って書いて。

For cnt = 2 To 11

って書いて。

mn = Range(“B” & cnt).Value

って書いて。

..って、していくんですね。

これは、間違ったアプローチです。

こんなことでは、書き上げてみて「動かない!」となったとしても、
細かく動作確認をしていないので、どこがおかしいのか分かりませんし、

ではどうするのかというと、なるべく中のものから作っていきます。

中のものが土台になって。
その上に、For と Next が乗っかってサンドイッチするような感じになります。

伝えにくいですが…。

家を建てるときに、家を建てるときに、左端から順番に作っていく大工さんはいません。
土台を作って、上にだんだんと積み上がっていきます。

それと、同じ感覚だと思っていただければOKです。

キーワード

コメント

コメントを残す

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

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド