
CountIf関数が使えなくて(構文エラーになる)困っています。ワークシートで試した時には、普通に動いていたのですが、、、、A列のデータに重複がないか調べるプログラムで、flag列というのがあって
ここに0が入っている行のデータのみ重複をチェックするようにする(途中)です。
矢印で書いた部分がおかしくて、なぜか構文エラーとなります。COUNTIF(A:A,A&i) という風に本当は使いたいのですが ":"で構文エラーになってしまいます。さんざん調べたのですが、私の力では解決できません。将来的にCOUNTIFのカウント数が1>でNGと表示させるつもりです。
よろしくお願いします。
'flagデータ数を配列に代入
For i = 1 To lRow
flag_column(i) = Cells(i + 1, flag_column_number).Value '各行の情報を配列に代入
Next i
'配列が0の行についてCOUNTIF関数を実行
For i = 1 To lRow
If flag_column(i) = 0 Then
j = COUNTIF(A1:A10, A & i) <- ここ
Cells(i + 1, 6).Value = j
End If
Next i
No.1ベストアンサー
- 回答日時:
こんばんわ
とりあえず、速報的な回答として、ワークシート関数をVBA上で使用する使い方が間違っている。
サンプルとしてこんな感じとか。
Sub ASD()
Dim rRange As Range
Dim j As Long
Set rRange = Worksheets("Sheet1").Range("A1:A10")
A = 1
j = Application.WorksheetFunction.CountIf(rRange, A & i)
MsgBox (j)
End Sub
ココとか
http://officetanaka.net/excel/vba/db/db02.htm
ココを参考にしてみて。
http://hinekure.vba-soft.com/?eid=484729
参考URL:http://hinekure.vba-soft.com/?eid=484729
No.3
- 回答日時:
標準モジュールに
Sub test01()
j = WorksheetFunction.CountIf(Range("a1:A10"), 1)
MsgBox j
End Sub
で正しく件数をカウントしましたよ。2007、2010でも変わりない。
(1)ワークシート関数をVBAで使う場合、前にWorksheetFunction.またはApplication.WorksheetFunction.をつける必要があること。
(2)VBAでは、セル範囲を示す引数は、シートの場合のA1:A10などはRange("A1:A10")としなければならない。
あるいはRange(Cells(・・),Cells(・・))
(3)VBAではそのままは使えない関数がある。(本質問の件の関数のことではないが)
これらはVBAでワークシートの関数を使うときの常識。
データ最下行が固定で無い場合は
Sub test02()
d = Range("a65536").End(xlUp).Row
'MsgBox d
j = WorksheetFunction.CountIf(Range("a1:A" & d), 1)
MsgBox j
End Sub
--
一般にエクセルのシートがメモリ的には配列的に考えられるので、データをさらに配列に入れることは必要が無いのでは?と
振り返ることが必要。
全般に少時間の勉強・経験で、ことをやろうとしている感じ。
まだまだ使うよりVBAやエクセルの智識輸入の時期だろう。
No.2
- 回答日時:
そこにあるデータをなぜわざわざ配列に格納したいのか不明という回答:
sub macro1()
dim c as long
dim r as long
dim i as long
c = あなたのflag_column_number
r = あなたのlRow
for i = 1 to r
if cells(i + 1, c) = 0 then
cells(i + 1, 6) = application.countif(range("A1:A10"), cells(i, "A"))
end if
next i
end sub
アナタのヤリタイ流儀を最大限尊重した回答:
間違い:
j = COUNTIF(A1:A10, A & i) <- ここ
正解:
j = application.worksheetfunction.countif(range("A1:A10"), range("A" & i).value)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) If関数に関する質問です。(再掲) 3 2022/10/01 20:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【マクロ】元データと同じお客...
-
【マクロ】実行時エラー '424':...
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】オートフィルターの...
-
特定のセルだけ結果がおかしい...
-
エクセル ドロップダウンリスト...
-
【マクロ】アクティブセルの時...
-
【マクロ】3行に上から下に並...
-
9月17日でサービス終了らし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel2007 VBA countif関数
-
『あまり』を均等に割り当てる方法
-
EXCEL(2003) VBA Option Baseに...
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
-
特定のシートの削除を禁止した...
-
EXCEL:同じセルへどんどん足し...
-
エクセル 計算式も入っていない...
-
Excelで金銭出納帳。繰越残高を...
-
複数シートの特定の位置に連番...
-
エクセルでファイルを開いたと...
-
Excel2007で、太字にした行のみ...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
VBAで条件によりフォントサイズ...
-
VBAでシートコピー後、シート名...
おすすめ情報