• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel2007 VBA countif関数)

excel2007 VBA countif関数

このQ&Aのポイント
  • CountIf関数が使えなくて(構文エラーになる)困っています。
  • ワークシートで試した時には、普通に動いていたのですが、、、、A列のデータに重複がないか調べるプログラムで、flag列というのがあってここに0が入っている行のデータのみ重複をチェックするようにする(途中)です。
  • 矢印で書いた部分がおかしくて、なぜか構文エラーとなります。COUNTIF(A:A,A&i) という風に本当は使いたいのですが ":"で構文エラーになってしまいます。さんざん調べたのですが、私の力では解決できません。将来的にCOUNTIFのカウント数が1>でNGと表示させるつもりです。

質問者が選んだベストアンサー

  • ベストアンサー
回答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
youkan_ni_ocha
質問者

お礼

回答ありがとうございます。勉強不足でした。ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答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やエクセルの智識輸入の時期だろう。

youkan_ni_ocha
質問者

お礼

ありがとうございます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答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)

youkan_ni_ocha
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう