EXCEL VBA统计个数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXCEL VBA统计个数
2012-12-11 16:54rongguo52013|分类:办公软件|浏览329次
像图片中那样,运行宏会跳出窗体,输入条件查询满足条件的数目有几条。
提问者采纳
2012-12-12 13:26
窗体不全,假设我现在要查找符合任一机器或程序或时间的数目,结果应该在哪里得到输出?窗体上表现不出来,现有的三个框我觉得应该都是条件输入框。
第二,机器编号、程序、时间这么长,输入想要完全匹配估计很难,要模糊匹配的话,得到结果又不准确.
综上所述,我觉得应该在窗体上增加两个控件,一个用于输出统计结果,可用TEXTBOX
第二个,可以用LISTBOX 或LISTVIEW,
具体逻辑是这样
现在己有的三个TEXTBOX作为输入条件的写入框,分别在每个TEXTBOX 的KEYUP 或KEYDOWN事件内增加代码,代码的作用是查找模糊匹配的结果,并将结果添加到LISTBOX内。
比如我在机器文本框内输入,V,则LISTBOX内列出所有符合条件的机器代码,以供选择;根据你的要求,可能在添加LISTBOX 列表项之前加上一段判断,以提供更精确的匹配结果
然后在LISTBOX双击事件或KEYPRESS事情内写段代码,将选中的条目赋值给相应的文本框(可用LISTBOX的TAG属性来确定文本框)
最后点击统计项,根据几个条件文本框内的内容在工作表里进行查找,统计条件数量,在TEXTBOX里显示,
提问者评价
谢谢!
评论|1
青水蛙鸣|来自团队E工作室|五级采纳率42%
擅长:办公软件VB其他编程语言情感情绪
按默认排序|按时间排序
其他3条回答
2012-12-11 17:41tyf_102|三级
1.按“Alt+F11”进入VBE
2.新建“UserForm1”用户窗体,添加3个标签,1个命令按钮,分别在“Caption”属性修改成所需的名称,再添加3个文本框,名称用默认的名称。
3.双击命令按钮,在打开的对话框中输入以下代码:
Private Sub CommandButton1_Click()
TextBox1.Text = ActiveSheet.Range("A1").End(xlDown).Row
TextBox2.Text = ActiveSheet.Range("B1").End(xlDown).Row
TextBox3.Text = ActiveSheet.Range("C1").End(xlDown).Row
End Sub
4.完成。
追问
我是想要查询符合条件的数目有几条
回答
1.如果查询的是数字范围,可以加入if语句进行条件判断,比如要在A列
查询大于100的数据个数,可以这样:
Private Sub CommandButton1_Click()
Dim i As integer,j As integer
j=0
For i = 1 to ActiveSheet.Range("A1").End(xlDown).Row
If ActiveSheet.Range("A" & i).Value>100 Then j=j+1 next i
TextBox1.Text = j
End Sub
其他的可以以此类推。
2.如果查询的是某个确定的数据,把上面的条件改成等于就行了。
来自:求助得到的回答
评论|0
2012-12-11 17:07Pisces_mar|四级
先对输入的字符串进行判断;
if (机器.text != '' & 程序.text!= '' &时间.text!= '' )
count = countifs(a:a,机器.text,b:b,程序.text,c:c,时间.text)
end if
利用countifs这个函数可以很轻松的得到满足条件的数目有多少。