素人です。誤認識などございましたらすみません。

VBAとは、EXCEL関数も利用できるものと聞きましたが、

例えば、range("A1:D10")において 5以上の数を調べることを
countif("A1:D10",>5)のEXCEL関数をもちいて表現するにはどのような記載の
仕方をすればよいでしょうか?

なおかつ、D10の部分を inputboxなどで、入力者が数値を変化させたいのです。
D10をE20とか自由に変更させたい。

他の方法もあると思いますが、countifとinputboxを用いて、入力者が範囲を自由に設定でき、5以上の数を数えさせるにはどうしたらよいでしょうか?

質問自体がおかしかったり意味がとおらないのではと心配していますが、なんとなく意味がつたわりましたでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

その場合は次のようにします。



Range("E2") = Application.WorksheetFunction.CountIf(Range("a1:a" & 変数), ">5")
    • good
    • 0
この回答へのお礼

pesoさん

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

お礼日時:2001/11/28 12:33

>例えば、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") にすると選択範囲が適用されます。

この回答への補足

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

補足日時:2001/11/28 09:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QInputboxメソッドでRangeオブジェクトを取得

WinXP、Excel2002です。

InputboxメソッドでRangeオブジェクトを取得
しようとしています。

ヘルプを見て、
Set myRange = Application.InputBox(prompt := "Sample", type := 8)

を適用したのですが、これではダイアログのボタンで
キャンセルすると、Setの部分でエラーになってしまいます。

これを回避するため、いろいろ考えましたが、結局On Error Resume Nextでエラーを無視することにしました。

私が初心者なもので、キャンセルや不正な入力のときのもっと適切なやり方があるのではと思い質問させていただきます。

みなさんは、inputboxでキャンセルや不正な入力があったとき、どのようにプログラムされているのでしょうか?

Aベストアンサー

ある本のApplication.InputBoxの説明には、エラーが起こった時の処理について次の3つが挙げられています(当たり前のことですが)。
On Error はエラーが発生した時に行いたい処理によって
(1)On Error Resume Next
(2)On Error GoTo Line
(3)On Error GoTo 0
がある。
Type=8の場合は処理を続けても意味がない場合がおおく
(2)でEnd Subの手前まで飛ばすケースが多いのでは。
On Error Exit Subは使えないでしょうから。

QエクセルのSheet1のA1:D5の範囲をSheet2のA1:D5へ参照したいのですが、何か方法はあ

エクセルのSheet1のA1:D5の範囲をSheet2のA1:D5へ参照したいのですが、何か方法はありますでしょうか?

Aベストアンサー

#5です。間違えました。

正「Sheet2のB2に以下を貼り付けて」
誤「Sheet2のA3に以下を貼り付けて」

QCOUNTIF関数

COUNTIF関数の 質問します。

A1:A20 に 数値入ってるとします。
10以上の セル数を 求める 式は
=COUNTIF(A1:A20,">10") ですよね?

質問なのですが
例えば、10以上20以下 の セル数を
求める時の 式は どういう 式に なるのでしょうか?

COUNTIFでは できないのでしょうか?
もし できないなら 他の 関数 教えてください。

よろしく お願い いたします。

エクセルは 2002です。

Aベストアンサー

 質問された条件は一つの式ではできなかったかと思います。
 そこで10以上のカウントしたものから20より大きいものをカウントしたものを
引いてみてはどうでしょうか。
例)
=COUNTIF(A1:A20,">10")-COUNTIF(A1:A20,"<20")

QIF関数とVLOOKUP関数を使って以上以下を検索させるには?

EXCEL2000使用しております。IF関数を使って数式を作っております。
値が10以上15以下なら特定のテーブルからVLOOKUPで数字を抽出、
そうでなければ別のセルを参照し計算する数式を作りたいのですが、
ifの後、○以上○以下を一度に表示するにはどうしたらよいかわかりません。
どうかよろしくお願いいたします。

Aベストアンサー

「=IF(AND(値>=10,値<=15),VLOOKUP(~),・・・)」
とすれば可能だと思います。

QExcel2010のCOUNTIF関数で誤動作

A列に20桁の数字ばかりの「文字列」が入ったセルが1000行ほどあります。
A列の書式は文字列に設定してあります。
特定のセルの中身が重複してないことを確認しようと。
B1=COUNTIF(A:A,A1)
のようにしたところ、うまく動きませんでした。
調査したところセル先頭から15文字までしか認識してくれません。
文字列扱いして欲しいのですが、数字ばかりなのが気に入らないようです。
数字だけのまま20桁認識させる方法は無いものでしょうか?

Aベストアンサー

>調査したところセル先頭から15文字までしか認識してくれません。
文字列データでも比較するときに数値化が可能な値は数値として扱うためと考えられます。
有効数字の桁数に係わる問題化と思います。

>文字列扱いして欲しいのですが、数字ばかりなのが気に入らないようです。
何処かに英字や記号が有れば純粋に文字列として扱われますので桁数の制限を避けられるでしょう。

>数字だけのまま20桁認識させる方法は無いものでしょうか?
COUNTIF関数ではできないみたいです。
SUMPRODUCT関数、SUM関数で配列を前処理することでカウントできます。

前処理は次の式になります。
(A:A=A1)*1
次の3つの式は正しくカウントできています。
=SUMPRODUCT((A:A=A1)*1)
=SUM(INDEX((A:A=A1)*1,,1))
=SUM((A:A=A1)*1)
3番目のSUM関数の場合は数式の確定時にCtrlとShiftを押しながらEnterキーの打鍵が必要です。


人気Q&Aランキング

おすすめ情報