VBAでExcel関数を使って範囲内の5以上の数を数える方法と範囲を変更する方法

このQ&Aのポイント
  • VBAを使ってExcel関数のcountifを利用して範囲内の5以上の数を数える方法と、範囲を自由に変更する方法について説明します。
  • VBAでのExcel関数利用方法について素人の方でもわかりやすく解説します。countif関数を使って範囲内の数値を条件でカウントする方法と、inputboxを使って範囲を変更できるようにする方法について詳しく説明します。
  • VBAでExcel関数を活用する方法について詳しく解説します。countif関数を使用して範囲内の数値を条件でカウントする方法と、inputboxを使って範囲を自由に変更できるようにする方法を紹介します。Excelの関数をVBAで利用することで、より高度な操作が可能になります。
回答を見る
  • ベストアンサー

VBAの中で EXCEL関数を使う

素人です。誤認識などございましたらすみません。 VBAとは、EXCEL関数も利用できるものと聞きましたが、 例えば、range("A1:D10")において 5以上の数を調べることを countif("A1:D10",>5)のEXCEL関数をもちいて表現するにはどのような記載の 仕方をすればよいでしょうか? なおかつ、D10の部分を inputboxなどで、入力者が数値を変化させたいのです。 D10をE20とか自由に変更させたい。 他の方法もあると思いますが、countifとinputboxを用いて、入力者が範囲を自由に設定でき、5以上の数を数えさせるにはどうしたらよいでしょうか? 質問自体がおかしかったり意味がとおらないのではと心配していますが、なんとなく意味がつたわりましたでしょうか? を

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

  • ベストアンサー
  • peso
  • ベストアンサー率41% (40/97)
回答No.2

その場合は次のようにします。 Range("E2") = Application.WorksheetFunction.CountIf(Range("a1:a" & 変数), ">5")

yokoneco
質問者

お礼

pesoさん どうも度々 ありがとうございました。なにぶんにも、VBA等のプログラムなるものは、右も左もわからないのでチンプンカンプンな質問でしたが、ごていねいにわかりやすく教えてくださいまして大変助かりました。

その他の回答 (1)

  • peso
  • ベストアンサー率41% (40/97)
回答No.1

>例えば、range("A1:D10")において 5以上の数を・・・ ワークシート関数を使うためには Application.WorksheetFunction.関数 とします。 例) Range("E1") = Application.WorksheetFunction.CountIf(Range("A1:D10"), ">5") 選択範囲にテキストボックスを使う場合は CountIf(Range("A1:D10"), ">5") の部分を CountIf(Range(テキストボックス名), ">5") にします。 また、 CountIf(Selection, ">5") にすると選択範囲が適用されます。

yokoneco
質問者

補足

pesoさんありがとうございます。大変たすかりました。大感激です。ところで下 のようなことはできるのでしょうか?追加で教えて頂けると助かります。 Sub Macro1() Dim 変数 変数 = InputBox("変数を入力してください") Range("E2") = Application.WorksheetFunction.CountIf(Range(変数), ">5") 'とやり A1:A13を入力すると出来ました!(大感激!!) 'ところで、テキストボックスにA1:A13に入力すると大変なので、A1:A×と固定してしまい 'テキストボックスに数字を入力するだけで範囲を指定させることはできないのでしょうか? '下のようにしてみましたが、デバックになってしまいました。 Range("E2") = Application.WorksheetFunction.CountIf(Range("a1:a変数"), ">5") End Sub

関連するQ&A

  • 【EXCEL】関数について

    初心者のため、きちんと説明できるか不安ですが、上手に伝われば幸いです。 例えば、 範囲をA1~A50にし、検索条件がD1にあった場合 =COUNTIF(A1:A50, D1) でOKですが・・・ 検索条件がD2~D6までの複数だった場合 =COUNTIF(A1:A50, D1:D6) だとエラーまたは0になってしまうのですが 何が原因でしょうか。 ※ちなみに、入力されているデータは数字ではなく「あ」や「A」などの単体の文字です。 もし、COUNTIF関数で出来ない場合は、どの関数を使えばよいでしょうか? SUBPRODUCT関数なども試したのですが、上手く正しい数字が返ってきません。 よろしくお願いします。

  • Excel関数のことで教えていただきたいのですが、、、

    Excel関数のことで教えていただきたいのですが、、、 SUBTOTAL と COUNTIF を1セルに同時に使用できませんか? 全行で”A”を数えることはできます。ここで、フィルタで行をしぼっても しぼった中から”A”を数えたいのです。 数字の合計ならSUBTOTAL(9,範囲)ですし、数字入力セル数を数えるならSUBTOTAL(2,範囲) ですが‥ よろしくお願いします。

  • VBA ワークシート関数のエラー

    シートに数式を入れていたものを、VBAで値のみ入力しようと考えています。 そこで、.Cells(1,1) = WorksheetFunction.数式といった形のメソッドを試しています。 しかし、複雑な数式を記述するとエラーが出てしまいます。 成功 (iferrorというワークシート関数が1つ) Debug.Print WorksheetFunction.IfError(1 / .Cells(1, 5) + 1 / .Cells(1, 6) + 1 / .Cells(1, 7) - 1, "P") 失敗(ワークシート関数のifとcountifなど複数のものが数式に混入) Debug.Print WorksheetFunction.If(CountIf(Range("C17:D49"), Range("C29")) > 5, Range("C29"), Range("D29")) Countifの場所でエラーになります。このcountifを使えるようにするためには、どうすればよいのでしょうか? WorksheetFunction.if(WorksheetFunction.Countif(、、、、という書き方はダメでした。 数式が汚くてすみません。 宜しくお願いいたします。

  • EXCEL-VBA の round関数

    EXCEL-VBAで Cells(1, 1) = Round(Cells(3, 3), 0) として、 C3 に28.5 を入力し、上のマクロを実行すると、 A1には、28と表示されてしまいます。 ワークシート関数の =round(c3,0) を他の適当なセルに入力すると、 その返り値は、29 とちゃんとなります。 c3が 28.5001 とかだと両者ちゃんと 29 となります。 これは、VBA関数のバグなりスペックなのでしょうか?

  • エクセルVBAではRounddown関数はつかえないのでしょうか?

    Excel2003SP2でVBAを使っています。 AAA = RoundDown(Range("A1"), 0) と入力してコンパイルすると 「コンパイルエラー SubまたはFunctionが定義されていません」 と表示されます。 エクセルVBAではRounddown関数は使用できないのでしょうか? それとも私の記述が何か間違っているのでしょうか

  • Excel2007でVBAでも関数でも構いません。

    Excel2007でVBAでも関数でも構いません。以下のように表示させる方法がお分かりの方、ご指導願います。 A1(●) B1() A2(●) B2() A3() B3() A4(●) B4() A5() B5() A6() B6(●) A7() B7() A8() B8(●) A9() B9() A10(●) B10() を・・・ C1(●) D1() C2() D2() C3() D3() C4() D4() C5() D5() C6() D6(●) C7() D7() C8() D8() C9() D9() C10(●) D10() に。 言葉では上手く説明できませんが、宜しくお願い致します。

  • COUNTIF関数

    COUNTIF関数の 質問します。 A1:A20 に 数値入ってるとします。 10以上の セル数を 求める 式は =COUNTIF(A1:A20,">10") ですよね? 質問なのですが 例えば、10以上20以下 の セル数を 求める時の 式は どういう 式に なるのでしょうか? COUNTIFでは できないのでしょうか? もし できないなら 他の 関数 教えてください。 よろしく お願い いたします。 エクセルは 2002です。

  • EXCEL2000 VBAでGETPIVOTDATA関数を使うには

    Excel2000です。 VBAで、GETPIVOTDATA関数を使用したいのですがうまくいきません。 セルですと、例えば=GETPIVOTDATA('sheet1'!A1,"DATA1 DATA2 DATA3")をworksheetfunction.getpivotdata(sheet1.range("A1"), "DATA1 DATA2 DATA3")で表示してもうまくいきません。 代わりに、Seeht1.PivotTables(1).GetData("DATA1 DATA2 DATA3")を記入すると、例えばDATA2(フィールド2)に値がない場合エラーになります。 どなたか、VBAでgetpivotdataと同等な働きをする処理方法を教えていただけませんでしょうか。 よろしくお願いします。

  • VBAの関数について

    VBA初心者です。 VLOOKUP関数の使い方がわかりません。 具体的に書かせてもらうと VBAの中にVLOOKUP関数を使いたいです 試験1ファイルのシート"sheet1"にある 検索値を使い 試験2ファイルの指定した検索範囲を 試験1ファイルのシート"sheet1"の指定した位置に数値を挿入することです。 例えばですが(この使い方も間違ってるかもしれません)コードを書いてみると 試験1の検索値はA5セルとします 試験2の検索範囲はB1~C20とします 検索範囲から取得した数値の位置はD5とします VLOOKUPに関してですが 検索値は変数を使い 検索値範囲も変数を使い 列番号はC列がいいので3で 検索方法はFALSEでお願いします sub test() dim a as range dim b as workbooks dim c as range set a = range("B1~C20") set b = workbooks("sheet1") set c = range("A5") workbooks("試験1").worksheets("sheet1").range("D5").value=workbooks("試験2").activesheet."=VLOOKUP(ここがわかりません)".value end sub そもそも変数やsetの使い方が間違ってるかもしれませんm(__)m コードを書いて貰えるととても助かります。 回答お願いします。

  • VBAのオブジェクトブラウザの見方

    VBAのオブジェクトブラウザの見方がよくわからないので教えてください。 たとえば、オブジェクトブラウザから「countif」を見ているのですが、   Function CountIf(Arg1 As Range, Arg2) As Double の部分の見方がよくわかりません。 (1)先頭の「Function」は、ワークシート関数だからFunctionと付いているのでしょうか? (2)「Arg1 As Range, Arg2」となっていますが、なぜ、Arg2の後に「As Range」がつかないのでしょうか? セルの範囲ではなく、VBAで指定できるからですか? (3)「 As Double」は何を指しているのでしょうか? 戻り値ですか? 数値で返ってくるからDoubleなのですか? 以上です。よろしくお願い致します。

専門家に質問してみよう