|
楼主 |
发表于 2011-1-28 18:21
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
原帖由 shaowu459 于 2011-1-28 17:07 发表
=SUBTOTAL(9,OFFSET($C$3:$H$3,,,ROW(1:8),))-SUBTOTAL(9,OFFSET(OFFSET($I2,ROW(1:8),),,COLUMN(A:F)-7,,6))+(COLUMN(C3:H10)=8)*(ROW(C3:H10)=10)*H3:H10
生成内存数组结果,不再是虚假的内存数组结果(能在多单 ...
是的,经测试,
691、692楼的 sum 和 696楼的 =SUBTOTAL(9,OFFSET(
在参与其他公式的计算时容易出现错误。
只有695楼的函数
MMULT
才能再参与到其他公式中进行运算。
为了能使公式进行扩展,把引用区域进行定义:
考场=Sheet1!$C$3:$H$10
相应的公式
=MMULT(C3:H10,--(ROW(1:6)<COLUMN(A:F)))+MMULT(--(ROW(1:8)>COLUMN(A:H)),MMULT(C3:H10,ROW(1:6)^0))
进行修改为:
=MMULT(考场,--(ROW(INDIRECT("1:"&COLUMNS(考场)))<TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(考场))))))+MMULT(--(ROW(INDIRECT("1:"&ROWS(考场)))>TRANSPOSE(ROW(INDIRECT("1:"&ROWS(考场))))),MMULT(考场,ROW(INDIRECT("1:"&COLUMNS(考场)))^0))
公式中的:
ROW(1:6)改为 ROW(INDIRECT("1:"&COLUMNS(考场))
COLUMN(A:F) 改为 TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(考场))))
ROW(1:8) 改为 ROW(INDIRECT("1:"&ROWS(考场))
COLUMN(A:H) 改为 TRANSPOSE(ROW(INDIRECT("1:"&ROWS(考场))))
也就是说,由名称 考场 来确定公式中引用的行数和列数。
体会sum+offset及mmlt函数在排考场中的作用 .rar
(30.75 KB, 下载次数: 276)
[ 本帖最后由 lhx120824 于 2011-1-29 09:47 编辑 ] |
|