お世話になります。
エクセル2003のマクロで質問です。
しばらく考えたのですがうまく質問できるか不安です、このファイルを見てもらって「こーしたい」「あーしたい」言えれば一番良いのですが…
記録シートのA1のセルに
=COUNTIF(集計!J1:J100,100)
とあるとします(集計シートJ1からJ100の中から100の数を拾いなさいですね)
ここで選択範囲の記録シートのA1のセルを選択してマクロの記録にて
1)数式バーで「=COUNTIF(集計!J1:J100,100)」の「集計!J1:J100」を選択
2)集計シートにてマウスでJ1を選択し、「Shift+Ctrl+↓」でJ1からデータを含むデータの途切れるセルまで選択
3)記録の終了
をしました。
私の考えとして、「Shift+Ctrl+↓」の理由は(なぜマウスで範囲をドラッグしなかったか)
集計J1からJ100
が将来
集計J1からJ101、もしくは集計J1からJ200
のように範囲が増えた場合に対応できる為に「Shift+Ctrl+↓」で選択範囲を選びました。
ところが、これをマクロの自動保存で手順を保存すると
=COUNTIF(集計!J1:J100,100)
のようになって、私の希望する
=COUNTIF(集計!J1をクリックして「Shift+Ctrl+↓」)
になりません。
そこで質問の仕方を変えて
http://oshiete1.goo.ne.jp/qa2511024.html
のように質問させていただき
Range(Selection, Selection.End(xlDown)).Select
を入れれば良いと思ったのですが
=COUNTIF(集計!J1をクリックしてRange(Selection, Selection.End(xlDown)).Selectで,100」)
にしたいわけです。
初心者で勉強不足はごもっともですがどうか良きアドバイスいただけないでしょうか?。宜しくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「Shift+Ctrl+↓」を再現するならこれ↓
Sub Sample01()
Dim cnt, endline As Long
endline = Range("J1").End(xlDown).Row
cnt = WorksheetFunction.CountIf(ActiveSheet.Range("J1:J" & endline), 100)
MsgBox cnt
End Sub
ですが、途中に空白行があると、うまく行きません
もし、その恐れが有る場合は、これ↓で、行けると思います
Sub Sample02()
Dim cnt, endline As Long
endline = Range("J65535").End(xlUp).Row
cnt = WorksheetFunction.CountIf(ActiveSheet.Range("J1:J" & endline), 100)
MsgBox cnt
End Sub
No.2
- 回答日時:
こんばんは。
>初心者で勉強不足は
そうではないと思います。ご質問の持っているその内容のレベルは、決して入門編ではないからだと思います。こういう動的なコードは、もう少し、セルやシートのオブジェクトやメソッドに慣れてからのほうがよいです。いきなり、こういう動的な処理を扱うのは、少し難しいのです。また、ワークシート関数を、入門編では扱わないほうがよいです。上級文法を習った後のほうがよいです。
また、本当に、言葉通りの仕様を、そのまま反映させるには、本来は、イベント・ドリブン型マクロにしたほうがよいのかもしれません。
>Range(Selection, Selection.End(xlDown)).Select
>を入れれば良いと思ったのですが
>=COUNTIF(集計!J1をクリックしてRange(Selection, Selection.End(xlDown)).Selectで,100」)
それを表すと、こうなります。
'--------------------------------------------
'コードの登録はシートモジュールでも可能
Sub MacroCountIf_0()
Const MYSEARCH As Variant = 100 '検索値
'End(xlDown)プロパティの空範囲のSelectの回避
If Selection.Value = "" Then
MsgBox "データのある場所から行ってください!", vbinfomation
Exit Sub
End If
Range(Selection, Selection.End(xlDown)).Select
MsgBox WorksheetFunction.CountIf(Selection, MYSEARCH)
Selection.Cells(1).Select '範囲選択を外す
End Sub
'--------------------------------------------
'以下は、標準モジュールに登録します。(上記とは少し意味が違います)
Sub MacroCountIf_1()
Dim myRng As Range
Const MYSEARCH As Variant = 100 '検索値
Set myRng = Range(Selection, Cells(65536, Selection.Column).End(xlUp))
MsgBox WorksheetFunction.CountIf(myRng, MYSEARCH)
Set myRng = Nothing
End Sub
'----------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
Excel : 二通りの合計が合わな...
-
Excelで毎日の売上を入力すると...
-
ピボットテーブルでは時間の表...
-
ピボットを更新すると数式が入...
-
エクセルの集計
-
Excel ピボットテーブルの作成...
-
excelで集計の合計を降順に並べ...
-
VBAで重複する項目を1つにまと...
-
エクセルで特定の色の数字だけ...
-
エクセルで文字が白くなる
-
エクセルで長い行を5行ごとに1...
-
エクセルの主軸と第2軸の0を合...
-
エクセルで円グラフに引き出し...
-
エクセルで文字を含む式に、カ...
-
エクセルで、時間 0:00を表示...
-
excelグラフでデータテーブルを...
-
【エクセル】区切り文字が含ま...
-
Excelのグラフについて教えてく...
-
エクセルでプルダウン選択され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
ピボットテーブルでは時間の表...
-
フィルタをしても最下行を常に...
-
エクセルで特定の色の数字だけ...
-
VBAで重複する項目を1つにまと...
-
ピボットの集計方法「合計」初...
-
ピボットを更新すると数式が入...
-
アンケートの集計
-
いい機能だけど、毎回めんどく...
-
エクセル、リソース不足エラー...
-
ピボットテーブルで同じデータ...
-
他部署からもらう データで、 ...
-
エクセル 関数を使った横方向の...
-
複数のピボットテーブルを一括...
-
VLOOKUP関数とCOUNT関数等の組...
-
excelで集計の合計を降順に並べ...
-
ピボットテーブルのページエリ...
-
Excelの集計結果だけをコピー貼...
-
エクセルの小計を自動的に色づ...
-
ピボットテーブルの逆
おすすめ情報