エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロ・VBA基礎編フォローアップ ベーシック
       └ 出現回数を数える。CountIf関数がやっていることをマクロで書くと?

出現回数を数える。CountIf関数がやっていることをマクロで書くと?

[11495] 2019-07-07 14:26:00 ほとさんからの投稿です。

小川先生

こんにちわ
先生の講義はわかりやくすてすらすら頭に入ってきます。
この調子で進めていきたいと思います。

[2]の回答を復習したとき、最後のfor next構文でお団子のとる範囲を間違えて最後の行を取りこぼしてしまいました。
間違いだということはすぐ理解できたのですが、
その時のマクロの実行結果が私の推測と違っていたので、質問させていただきました。私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。

復習で書いたマクロは以下のものとなります。
Sub countif_3()
Dim goukei

Dim gyo2
For gyo2 = 4 To 6
goukei = 0
Dim gyo
For gyo = 4 To 18
If Range("c" & gyo).Value = Range("e" & gyo2).Value Then
goukei = goukei + 1
End If
Next


Next
Range("f" & gyo2) = goukei

End Sub

 


[11501] 2019-07-08 11:01:36 小川慶一さんからの投稿です。

ほとさん:

ほとさん:

> 私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。

言い換えると、ご質問は、「For Next構文で使うカウンター用の変数が、For Next構文を抜けたときにどういう値になっているか?」ということですね。

経験的に、どうも、For Next構文では、

For x = a To b

Next


で、xの値がaからbの範囲にいなくなったタイミングでループを抜けるようですね。
なので、ループを抜けた直後は、 b + 1 になっているようです。

とはいえ、Visual Basicという言語がそれを保証しているわけではありません。

For Next構文のカウンター変数の値は、For Next構文内では利用価値がありますが、For Next構文を抜けたら利用価値はない、と思っておいてください。

この件は話しだすと長くなるので、まずはこのへんで。

 


[11505] 2019-07-09 07:07:22 ほとさんからの投稿です。

ありがとうございます。

ループを抜けた時の挙動は保証されていないということですね。

承知しました。
今後、気をつけるポイントにしたいと思います。

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ