• ベストアンサー

countif関数で離れた場所を検索範囲にする。

countif関数で離れた場所を検索範囲にしたいのですが、いい方法がありますか? 普通に範囲指定するとA1:F6のようにはできますよね。 2列おきに範囲指定するよい方法はないかと思っています。どなたか教えていただけませんか?  A B C D E F 1 2 3 4 5 6

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

  • ベストアンサー
回答No.2

いくつか考えてみました。  (COUNTIF1つで出来る方法は見つかりませんでした。) 気に入る方法があればいいですけど。 1.範囲毎に分ける =COUNTIF(A1:A6,">5")+COUNTIF(D1:D6,">5") 又は =SUMPRODUCT((A1:A6>5)+(D1:D6>5)) 2.Mod関数とColumn関数を利用する。   列番号を3で割った時の余りが1で、値が5より大きいセルの個数 =SUMPRODUCT((MOD(COLUMN(A1:F6),3)=1)*(A1:F6>5))   (こちらは普通の関数。入力後、[Enter]で確定) 又は =SUM((MOD(COLUMN(A1:F6),3)=1)*(A1:F6>5))   (こちらは配列数式。入力後、[Enter]の代わりに[Ctrl]+[Shift]+[Enter]) 3.VBAでユーザー関数を作成 =Countif2(">5",A1:A6,D1:D6) (Countif2(条件,セル範囲1,セル範囲2,・・・・) 標準モジュール Function COUNTIF2(条件, ParamArray セル()) As Long   Dim i As Long   For i = 0 To UBound(セル)     COUNTIF2 = COUNTIF2 + Application.WorksheetFunction.CountIf(セル(i), 条件)   Next i End Function すべて同じ結果になります。 ・SUMPRODUCTと配列数式は列全体の指定は出来ません。A:F等 ・2列分位なら範囲毎に指定してもいいと思います。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

CountIf関数は範囲を1つしか指定できないようですが 2つ以上の範囲指定をできるようにして見ました(ユーザー関数を作りました。) ツール-マクロ-VBE(ここでVBE画面に変る)-挿入-標準モジュール-(ここで出ている画面に)下記のコードをコピペする。 Function countx(a As String, b As String) d = Split(a, ",") c = 0 For i = 0 To UBound(d) c = c + Application.WorksheetFunction.CountIf(Range(d(i)), b) Next i countx = c End Function そしてワークシートに戻り、答えを入れたいセルに =countx("A2:A9,C2:C9,D2:D9",">20")のようにいれて 下さい。 A2:A9,C2:C9,D2:D9の部分は(A)(前後)両端を””(半角)で括ること(CountIf関数と違う点)(B)範囲を並べるとき、区切りを半角カンマ(,)で区切ること (C)カンマで区切って入れる数は10や20までなら制限なしと思う、でお願いします。範囲は列に拘ることなく、規則性なく、指定しても良い。 例 "A2:A3,C2:C9,E2:E9,D5:D5"など。

関連するQ&A