Excel教程下载中心,Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,培训学习Office的最佳社区

 13 12
发新话题
打印

[求助]速度问题,怎样改MMULT函数代替原来的SUM函数?     hits : 879

[求助]速度问题,怎样改MMULT函数代替原来的SUM函数?

我从本论坛上知道了MMULT函数可以提高速度等优点,
现在我想把E列和F列的SUM函数改为MMULT函数,但我不不知怎样做。

本表的数据非常庞大并随时更新,但速度非常慢,想改一个数,要等很久才能完成。我只求统计速度快些,或有什么优化公式使工作表计算速度加快?
现请各位大师们帮帮忙。谢谢!

[此贴子已经被作者于2008-3-28 0:38:44编辑过]

附件: 您所在的用户组无法下载或查看附件

TOP

我想问问哦,这条公式“{=SUM(COUNTIF($J$3:$AH$3,$B13:$D13))}中的COUNTIF($J$3:$AH$3,$B13:$D13)是什么意思啊?还有哦!COUNTIF这个函数有什么用处呢?(谢谢)!

[em06]

TOP

QUOTE:
以下是引用spring1119在2008-3-28 0:55:31的发言:

我想问问哦,这条公式“{=SUM(COUNTIF($J$3:$AH$3,$B13:$D13))}中的COUNTIF($J$3:$AH$3,$B13:$D13)是什么意思啊?还有哦!COUNTIF这个函数有什么用处呢?(谢谢)!

[em06]

这个表的作用是,分析彩票时如果包几个号码看历史上各期中多少个号码。

至于公式,我也是从论坛上找来的,也不懂是什么意思。

TOP

没人出来帮忙啊?

TOP

没人出来帮忙啊?

TOP

MMULT应该有个限制,行列数不能超过某个数就不能运算了,实际数据有多少呢?按附件的看速度也很快么
宝宝,加油!

TOP

楼主,还在否,我把MMULUT的方式做好了,不知道是否能提高你的速度。公式很简单,还是先上传附件看吧


=====================================

公式为=MMULT(COUNTIF(条件1,彩票数据),{1;1;1})

其中 条件1 和 彩票数据 都是名称定义,只是这里用了最简单的固定位置的引用。一个对应条件1的 数值单元格,一个针对三列彩票数据。

如果能提高效率,我是这么理解MMULT的,这个MMULT是个 区域单元格数组公式,怎么理解呢,如果一个公式一次计算返回一个函数值,那么我就认为是单单元格数组,如果一个公式一次计算并行返回一个行列区域的值,那么我把他们当成是区域单元格数组公式。 那么如果改动一个数据,对于 N*M的单单元格公式来说要进行N*M次的公式计算,而对于MMULT这种区域单元格公式来说只要执行一次计算就可以了。所以效率会高。

这个题我觉得涉及两块内容,看上去都简单,单理解了比较有用。

第一个就是明摆在眼前的:MMULT的公式的运算机理,细得以前有个版主讲过,我只讲一下粗条子的:它的参数是两个矩阵,对我们写公式来说,最一般的比喻可以用一块N*M的方形单元格区域来替代了,我们定为方块1(N行M列)和方块2(M行L列),这里M不是笔误,而是必须遵守的一个规则。它的值也是一个矩阵,并且是 N行L列的。是不是很复杂,哈哈。

这么记吧,方块1 的第一行 和 方块2 的第一列 进行 SUM(方块1 的第一行*方块2 的第一列)的运算 结果作为结果矩阵的第一行,第一列的交叉单元格元素a11。因为是SUM运算,所以喽行列数是有一定要求的。

扩展:

方块1 的第 I 行 和 方块2 的第 J 列 进行 SUM(方块1 的第 I 行*方块2 的第 J 列)的运算 结果作为结果矩阵的第 I 行,第 J 列的交叉单元格元素aij.

光用脑子想有点复杂,你纸上画一下就知道这个很合一般理解的,不用记了,记的是要忘的,不记看它怎么忘,呵呵

===================================

第二个点,就是数组公式的理解,把普通公式的一个单值参数变成一个一维向量,那么值就是一维向量,给点想象力你就会问,如果普通公式的那个单值参数变成二维向量呢,自然结果也编成二维的了。

这里就是COUNTIF(条件1,彩票数据),结果的数据组合形式就和彩票数据平行的,值就是如果该数据存在条件1中就是1,否则就是0,格局是3列,很多行的那种,我们就是要每行 SUM起来,这个就是只要把MMULT的第二参数设置为3行1列的全1 就可以了。好了,渴了。希望你能理解。

这一点很重要哟

[此贴子已经被作者于2008-3-29 19:22:21编辑过]

附件: 您所在的用户组无法下载或查看附件
宝宝,加油!

TOP

QUOTE:
以下是引用spring1119在2008-3-28 0:55:31的发言:

我想问问哦,这条公式“{=SUM(COUNTIF($J$3:$AH$3,$B13:$D13))}中的COUNTIF($J$3:$AH$3,$B13:$D13)是什么意思啊?还有哦!COUNTIF这个函数有什么用处呢?(谢谢)!

[em06]

先解释一下countif(range,criteria),这个函数的作用就是对CRITERRIA在RANGE中出现的次数进行统计。

当然上面是普通公式,一般range是个单元格区域,criteria是某个单元格。

如果criteria也是个单元格区域,最简单就是2个单元格,那么返回值也将是两个值。这两个值相当于把每个单元格在range中出现的次数统计了一下。不过这个时候为了“提醒”EXCEL,需要在公式编辑状态输入ctrl+shift+enter组合键。表面效果就是公式会外包一次 {}.

这位同学可以去看我的这个帖子

[此贴子已经被作者于2008-3-29 19:42:34编辑过]

宝宝,加油!

TOP

谢谢胡剑0227版主的热心帮忙!

胡剑版主真是高手!!

我先下载试试效果

[此贴子已经被作者于2008-3-29 21:50:25编辑过]

TOP

今天我试了胡剑版主给的公式,速度确实比原来快好多。我非常满意,非常感谢胡剑版主的帮忙。
但是,这个公式使用起来也有些问题:
1、数据不能增加。在2218行以后计算错误。修改定义名称到4000行后也一样。不像原来的公式那样很容易拖拉复制公式就能计算了。2、公式不能删除,如不想统计这么多行数据,想删除又不能。3、公式的复制粘贴不知怎样控制。
望胡剑版主指点。

TOP

 13 12
发新话题
本论坛言论纯属发表者个人意见,与Excel Home立场无关,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!