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

VBAでの文字列操作が苦手なあなたへ

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

エクセルマクロ・VBA達人養成塾 小川です。

http://www.exvba.com/vb/index.php

達人養成塾 小川です。

先日、「エクセルマクロ・VBA速習コース」を受講された方から、
VBAを覚え立てのころにありがちな質問を受け付けました。

ちょっと、シェアしますね。

いつもお世話になります。質問させてください。
セミナーでは例えばRangeの中な値を下記の様にして変化させること学びました。For cnt =1 to 100
Range(“A” & cnt).value・・・
next

Rangeが一つのセルの場合はうまくいくのですが、
Range(“A1:G100”)
の場合「G100」の100の値を変数で指定する方法が判りません。
ご教示の程宜しくお願い申し上げます。

とのこと。

VBAを覚え立ての時期は、こういう問題でつまづきがちですね (^^;

で、どうするのかというと。

僕がこういうときにするアドバイスは、

「面倒でも、こまごまとしたステップを踏みながら、
だんだんマクロを作っていくこと!」です。

いつも、セミナーで言っていますが、

“Nothing is particularly hard if you divide it into small jobs.”

です。 (by Henry Ford)

ということで、やってみます。

まずは、”A1:G100″

“A1:G” & “100”

としたところで、いったんテストします。

そして、OKだったら、

“A1:G” & “100”

“A1:G” & hensu

としたところで、いったんテストします。

それでOKなら、完成!という感じです。

各行ごとの処理だったとしても同様です。”A100:G100″

みたいなものを処理する場合なら

“A100:G100”

“A” & “100” & “:G” & “100”

としたところで、いったんテストします。

そして、OKだったら、

“A” & “100” & “:G” & “100”

“A” & hensu & “:G” & hensu

という感じですね。

手順を踏んで、ちょっとづつ直していってください。

僕はそんなことしないでも、一瞬でできます。
でも、マクロ覚え立てのころは、やはり面倒でも手順を踏んでやっていました。

プログラミングで、特に、文字列操作で引っかかっている人を見ていると、
高校2年生ごろまでの自分を思い出します。

数学の計算問題とか、苦手だったんですよ…。もう、ムチャクチャ。

当時の僕は今よりも横着な人間で、計算問題とか、
きちんと紙に書いて計算やるのが大嫌いでした。

面倒くさいし。
頭だけで考えても、なんとか分かりそうだし。

とか、そんな感じ。

でも、頭だけで考えようした問題は、ほぼ確実にどこかを間違えてしまい、
不正解になっていました (T_T

それで、高校3年生の春くらいに、気がついたんですね。

こりゃ、ダメだ…。と。

高校の中間・期末試験で、計算問題は3個に1個以上の確率でバツがついて返ってくる。
文章題も、計算間違いで落としている問題がボロボロある。

実は、小学校のころから、僕はそういう感じでした (^^;

でも、高校3年生の春くらいに、気がついたんです。

「そうか、『頭だけで考えようした問題は間違えてしまう』のであれば、
逆に、どんなにベタで単純な計算でも、いちいち筆算してしまおう。」

それで、数学、物理、化学の問題を解くときには、
とにかく、計算は、計算用紙に、ガタガタ、ガタガタと書いていくようにしました。

どのくらいかといと。もう、

3 + 5 x 2

くらいの計算でも、

3 + 10

という式に直してから、

13

という答えを出すくらい。

ちょっとでも頭が「複雑..」と感じることがあれば、
ぜったいに暗算しない、と決めてやりました。

そうしたら、おもしろいくらいに、計算問題を間違えなくなりました。

そりゃ、そうですよね。

でも、そのレベルがまた…。

どのくらいかというと、高校3年生のときの高校の数学の先生よりも、
計算問題については、得意になってしまったくらいです。
(僕のほうが、早くて正確になっていました ヾ(´ー`)ノ )

で、そうすると思わぬ派生効果が。

文章題を解くときにも、エラく正解率があがるようになりました。

なにしろ、

「この問題の言わんとすることを、計算式にさえしてしまえば、
その式がどんなにグチャグチャしたものだったとしても、
絶対に計算しきって正解できる!」

という自信がついたからです。

計算力にムチャクチャ自信があるんで、その分、
文章題の言わんとすることのほうに意識を集中できるようになった
んですね。

計算力をつけたことが、単に、「文章題」を解くときの計算力が向上しただけでなく、
文章のほうにより意識を集中できるようにしてくれたのです。

僕は、高校3年生のときに急に成績が伸びて、最終的に、

「現役浪人あわせて7年ぶり13人目」
「現役では、開校45周年にして、42年ぶり3人目」

という極めてレアな形で東大に現役合格できた理由のひとつは、
徹底して、計算力をつけたことでした。

当時の僕は10代で、今は30代ですが。
こういう課題にであったときにやっていることは同じだな、と感じます。

「計算問題になれば、あとは正解しきれる」というのも、

「文字列を加工するだけの問題になれば、あとは正解しきれる」

というのも、同じです。

そういう自信が、VBAでプログラムを書くとき、より具体的な課題について考え抜く力につながっていきます。

そして、

「文字列を加工するだけの問題になれば、あとは正解しきれる」

というところにいたるには、

“A1:G100”

“A1:G” & “100”

“A1:G” & hensu

みたいに、ちまちまと細かい変更をくり返しながら、
ひとつずつ、確実に正解していく手間を惜しまないことです。

あなたのプログラミングスキルの本当のブレークスルーは、そこから起こります。

キーワード

コメント

コメントを残す

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

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド