lzth.net
当前位置:首页 >> ExCEl 求助一个按指定条件求和的VBA >>

ExCEl 求助一个按指定条件求和的VBA

选中一个灰色的单元格,同时按Alt和F11进入宏界面,点菜单的插入,模块,粘贴如下代码:Sub aaa()MsgBox Selection.Interior.ColorIndexEnd Sub直接按F5运行此宏,得到一数字,这是灰色的VBA代码,记住它.再粘贴如下代码:Sub test()

用sumifs就可以嘛

可以用vba的字典法完成:Sub test()Set d= CreateObject("scripting.dictionary")r=Cells(Rows.count,1).end(3).rowarr=Range("A1:B" & r)Range("A1:B" & r).ClearContentFor i=1 to Ubound(arr) d(arr(i,1))=d(arr(i,1))+arr(i,2)Next y=d.keyst=d.itemsFor i =0 to ubound(y) Cells(i +1,1)=y(i) Cells(i +1,2)=t(i)Next End Sub

sub mesum()dim a as rangedim b as bytedim c as bytedim d as bytedim e as byteon error resume nextset a = application.inputbox("请用鼠标选择要求和的区域!", type:=8)b = a.end(xldown).row - a.row + 1c = a.end(xltoright).column - a.

但是有个问题,行数和列数不一定.不用要用户去数据行列,可以用以下方式得到:nLR = ActiveSheet.Cells.SpecialCells(xlLastCell).Row '最后一行(与连续与否无关) nLC = ActiveSheet.Cells.SpecialCells(xlLastCell).Column '最后一列(与连续与否无关)

可以用 range().end(xlup).row取行数 range().end(xltoleft).column取列数 取到最右下角就简单了,自己构造一下就行了

=SUBTOTAL()自己在EXCEL中按下F1键, 然后输入SUBTOTAL,好好学习一下!微妙无穷!改变 参数可实现你讲的要求.何必自己编一个? 另一个最简单的方法是(在EXCEL2010中):用套用单元格格式制作一个表格,在表格工具→格式中,把“汇总”选 上,最后一行的汇总中,就是用了这个公式!

Sub test() Sheets("表二").Range("a1").Consolidate "表一!c1:c6", xlSum, True, True End Sub

=SUM(INDIRECT("B"&MATCH(LEFT(A17,3),A$1:A$15,0)&":B"&MATCH(RIGHT(A17,3),A$1:A$15,0)))假设001-003 在A7 还有应该是001-003004-008009-013014-015吧,你自己修改一下

1,用if 和 and 相连实现多条件,语句下面求和就行2,VBA可调用工作表函数,直接用Application.SUM()也行啊

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com