Fujitsu The Possibilities are Infinite

 

  1. ホーム >
  2. 富士通ジャーナル >
  3. 差のつくビジネススキル >
  4. 役立つEXCEL事典 >
  5. For…Nextループで、一気に書き替える(1)

《連載第2弾 少しだけ、マクロを"カジって"みよう》
For…Nextループで、一気に書き替える(1)

引き続き、「For・・・Nextループ」を掘り下げてみたいと思います。 少しだけリアルに、「見込み客進捗管理表」をマクロで、触ってみたいと思います。
良くあることだと思いますが、組織変更。 今回は、担当者の所属部門が変更になったが、見込み客はそのまま各担当者が引き継ぐ。という設定で話を進めてみたいと思います。

【図1】の担当者が、【図2】のように組織替えを行った

【図1】の担当者が、【図2】のように組織替えを行った。という設定です。 当然、見込み客管理表の担当部門もいろいろと書き替えなければなりません。
(この行数であれば、打ち込み直したほうが早いでしょうが、見込みが、100件もあれば、いやになってきますよね。) さて、前回までの学習が、役に立ちそうですか?・・・・やってみましょう。

・・・その前に。
【図1】では、見込みの明細が3~19行(見ればわかる)ですが、 これがたくさんあったときや行数が変わるたびにマクロを書き替えるのでは大変です。そこで、チョット聞きなれない英語(?)ですが、次の手法を覚えておくと便利なので先にひとつ。

【図3】

CurrentRegion は、現在の範囲とでも訳すのでしょうが、[A2]に連続して、接している範囲を捕まえてくれます。 その後ろの .Rows.Count は、その範囲の行(Row)の数(Count)。
すなわち、rには、[A2]に接している範囲の行数が入ります。
実際にこの例では、 r の値は、見出しや合計を含む、20 という値が入ります。 (したがって、それらの行数を排除して、実レコード数(見込み客案件数)を捕えたいときは、r = Range("A2").CurrentRegion.Rows.Count - 3 のようにすれば、良いことになります。)
今回は、これをFor・・・Nextにうまく使います。

【図4】

(1)まず行数です。ここでは、r に 19 が入ります。(合計行を処理の対象からはずすため、-1しています。
(2)は、(4)で、名前を見つけるために、名簿の入ったシート(Sheet2)をアクティブにしておきます。
(3)で、見込み客管理表に記載された名前をFindwordという変数に代入します。(i が、3のとき、Findwordは、“佐藤三郎”さんになります。)
(4)は、その“佐藤三郎”さんを名簿の中から見つける命令。そして、見つけたときの行(Row)をFindrowに代入しています。 (EXCELのワークシート上では、[検索]にあたります。長いので、最初のころにお話した、マクロ記録とカットアンドペーストを使ってみるのも良いでしょう)
(5)は、見つけた行の隣("F"列)にある値を、見込み客管理表の対象の行("I"行)の担当部門欄に書き込みます。

突然の登場ですが、Find関数は、EXCELでレコード処理的にデータを扱うには必須の関数なので、あえて使ってみました。

少し、わかりにくかった方のために、次回は、いかにもEXCEL的な方法で同じことをやってみたいと思います。

経営コンサルタント 谷田貝 敏紀
[2003年11月30日 掲載]

ジャーナル最新のテーマ

今月のテーマ:インフラ最適化 全社視点、経営視点で取り組む「インフラ最適化」 続きを読む


今月のアンケート Q:あなたの会社では「富士通のサーバ」をお使いですか? 集計結果は1月13日から毎週公開 回答する


お客様の声をお聞かせください

富士通ジャーナルに掲載している記事やコンテンツについてのご意見・ご感想を、ぜひお寄せください。

ご意見・ご感想フォーム いただいた、お客様の声


お寄せいただいたご意見・ご感想については、富士通からの回答をお約束するものではありません。ご了承ください。
なお、富士通からのご回答を必要とするお問い合わせについては、
富士通ジャーナルに関するお問い合わせをご利用ください。