[[20140603171251]] 『VBA内でCOUNTIFS使いたいのですが』(ろでます) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA内でCOUNTIFS使いたいのですが』(ろでます)

VBA内でCountifsのワークシート関数を使用したいのですが、初心者でアドレス指定方法がこんがらがってしまい、使用できずに困っております。

VBA内でCOUNTIFS関数を使う場合は、検索範囲はRangeオブジェクト(A1:A10とか)で指定しなければならないようですが、私が使用したいのはCellsで指定した範囲を使いたいのです。

具体的に申し上げると、Findメソッドを使用して特定の文字列がある行列の最初の行と最終行を検索し

Set rngFind = Cells.Find(What:="検索文字列1", LookAt:=xlWhole)
i = rngFind.row
Set rngFind = Cells.Find(What:="検索文字列2", LookAt:=xlWhole)
j = rngFind.row

行番号を取得するので、Cells指定ではないと指定できない・・・・。

このようなときに、うまくCountifのようなRangeオブジェクトのワークシート関数をVBA内でうまく使用する方法がわかりません。

おそらく方法は多々あるとは思うのですが、私の知識不足でうまく実施することができません。

どなたか、このような場合の解決方法を教えていただけませんでしょうか。

本当に初心者な質問で申し訳ございません。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


状況がよく判らないのですが、こういうこと?
    Set rngFind = Range("A1:A10").Find(What:="検索文字列1", LookAt:=xlWhole)
    Set rngFind = Range(Cells(1, "A"), Cells(10, "A")).Find(What:="検索文字列1", LookAt:=xlWhole)
(???) 2014/06/03(火) 18:09

COUNTIFSを使うのだとすると、こう?
Application.WorksheetFunction.CountIfs(Range(Cells(i, "A"), Cells(j, "A")), "*")
(???) 2014/06/03(火) 18:21

コメントありがとうございます。
ろでますです。
返信が遅くなり申し訳ございません。

CountifsのVBA内での書式が
Application.WorksheetFunction.CountIf(Range(範囲, 条件)

で、ネットで調べると、この「範囲」の書式がRangeオブジェクトで、Rangeオブジェクトの範囲指定の仕方は
A1:A10
のような書式だと思っておりまして、この書き方だと確か
A変数:A変数
のような記載の仕方ができなかったと記憶しており、え、じゃあどうやって範囲指定をすればいいの???と考えていた次第です。

コメントいただいた通り、なるほど、範囲を指定するのであれば
範囲指定のやり方に「:」
を間に入れるような固定的な書き方しかダメというようなものではないのですね。
Rangeオブジェクト(といってもオブジェクトの概念自体をよく知らないのですが)で範囲をしている書式なら何でもよいということなのでしょうか?

すいません、オブジェクト・プロパティ・コレクションなどの概念もしっかり理解していないのでこのような質問をしてしまいました。
申し訳ございません。
(ろでます) 2014/06/05(木) 17:30


大雑把に言うと、

オブジェクト:部品(大きめの部品)
プロパティ:要素(オブジェクトの小部品)
コレクション:寄せ集め

この程度の理解で十分かもです。

でもって、Rangeオブジェクトで引数を2つ指定する場合、範囲の左上と右下のセルを指定するのです。
A1:A10のように、引数1つで範囲指定もできます。
(???) 2014/06/06(金) 16:19


 >Rangeオブジェクトの範囲指定の仕方は
 >A1:A10 
 >のような書式だと思っておりまして、この書き方だと確か 
 >A変数:A変数 
 >のような記載の仕方ができなかったと記憶しており、え、じゃあどうやって範囲指定をすればいいの???
 A1:A10のセルを指定するのは
 Range("A1:A10") って書いてありましたよね?
       ~~~~~~~~ 前後に「"」がついているので、この部分は 文字 です。

 たとえば、 B1セルが「1」B2セルが「10」の時
 A1セルに ="A"&B1&":A"&B2 の式を入れると
 A1セルには A1:A10 と表示されますね?

 なので
 Range("A" & i & ":A" & j)
 こんな書き方も出来そうです。
  
(HANA) 2014/06/07(土) 09:17

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.