
VBA内でVLOOKUPを使い、条件に当てはまる人数をカウントしたいと
考えています。
シート3に
氏名 所属 担当1 担当2 担当3 …
太郎 1 1 1
次郎 2 1
三郎 1 1
四郎 2 1
がデータとして入力されています。
シート1に
氏名
太郎
四郎
担当1合計 x
担当2合計 y
としてあります。
やりたいことは、シート3のデータを使いVBA上で計算をして担当数の合計を出すことを
考えています。
知識が浅はかですので、VLOOKUPを使っての作成ですが、
担当2について
Dim k As Long
Dim j As Long
j = 0
For k = 5 To 24
If WorksheetFunction.VLookup(Worksheets(1).Cells(k, 3), Worksheets(3).Range(Cells(1, 1), Cells(100, 6)), 4, False) = 1 Then
j = j + 1
next k
End If
として動かすと、構文が間違っているようで、エラー1004と表示されてしまいます。
構文の間違いを教えていただけますでしょうか。
不備がありましたらご指摘ください。
No.2ベストアンサー
- 回答日時:
こんにちは
>エラー1004と表示されてしまいます。
エラー1004は「実行時エラー」のはずなので、「構文エラー」ではありません。
一方で、ご提示のコードには構文のエラーがありますので、先にそちらでひっかかるはずですが・・?
まずは、そちらに関して・・
「 For ~~ Next 」
と
「 IF ~~ End If 」
はどちらかにもう一方が包含されている関係である必要があります。
しかし、ご提示のコードでは、互いにまたがってしまう関係になっています。
それなので、エクセルがどう解釈したらよいのかわからないと言ってくるはずです。
ついでながら、実行時エラーになりそうなのは、
>Worksheets(3).Range(Cells(1, 1), Cells(100, 6))
例えば、 Cells(1, 1) 等は、アクティブシートのA1セルと見做されますので、実行時にアクティブなシートが「Worksheets(3)」以外の場合にはエラーになります。
逆に言えば、Worksheets(3)をアクティブの状態にして実行すれば、エラーにはなりません。
また、ご質問には関係ありませんけれど、列の合計を出したいだけのように思われますが、関数を使って求めるのなら、SUM関数を利用すれば済む話のように思われますが・・?
回答ありがとうございました。
ヒントをいただき、range(worksheets(3).cells(… ということに気づきました。
No.1
- 回答日時:
Worksheets(3).Range(Cells(1, 1), Cells(100, 6))
この指定方法が間違っている。
Sheet3の
A1セルには何が入力されていますか。
F100セルには何が入力されていますか。
そこにセルの範囲を指定するための値が入力されていれば、正しく動作しますよ。
たぶん ”A1:F100” のように指定したいところが、
シート3のA1セルの値からF100セルの値で指定される範囲……という訳の分からない指定になっているのでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
値が入っているときだけ計算結...
-
excelでsin二乗のやり方を教え...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
リンク先のファイルを開かなく...
-
EXCELで式からグラフを描くには?
-
Excel 数値の前の「 ' 」を一括...
-
小数点以下を繰り上げたものを...
-
【Excelで「正弦波」のグラフを...
-
精子に血が・・・
-
2つの数値のうち、数値が小さい...
-
検便についてです。 便は取れた...
-
Excel 0目標に対して数字があ...
-
一番多く表示のある値(文字列...
-
ワードのページ番号をもっと下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報
回答ありがとうございます。
ご指摘いただいた通り、 ”A1:F100”の範囲指定で正しく動きました。
ここはrange(cells…)ではなく、通常の ”A1:F100”のような指定がよいのでしょうか?
cellsの範囲指定はできるものなのでしょうか??