Visual_Basic 板


LINE

※ 引述《A1pha ([αλφα])》之铭言: : 标题: [VBA ] 请问如何在VBA里面使用矩阵公式? : 时间: Tue Mar 2 14:11:37 2010 : : 请问, : 在VBA里面, : 要怎麽使用矩阵啊? : : 在工作表中, : =B2:B30+D2:D30 : 只要按下ctrl+shift+Enter就可以产生矩阵了, : 在VBA里面有没有像这样的方法? : : 例如我异想天开地,这样写: : Array("b2:B30"+"D2:D30") : 结果当然是不行.... : : 有没有类似这样的概念或是方法呀? : 还是只能乖乖用 dim arr() as variant : 然後一个一个将储存格里面的东西丢进去,然後再做运算这样...囧 : : -- : 据闻,椅子在听说Money Ball要拍成电影後如是回应: : : : 我椅子,就在这个moment,要爆啦! : : -- :



※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 123.194.88.67 : → stool100:你的运算结果是? 03/02 17:00 : → A1pha:#VALUE! 03/02 18:04 : 推 rushcat:录制巨集 看看他怎麽运作的吧!? 03/02 18:36 : → A1pha:这招我试过,但是他录制的东西是让某储存格的值= 03/02 18:47 : → A1pha:你所输入的那些字 Selection.FormulaArray = "你输入的公式" 03/02 18:48 : → A1pha:而我想要的,是直接在VBA里面做运算,然後在拿去做别的用途 03/02 18:48 : 推 stool100:你最後的目的是要做什麽运算? 03/02 21:28 : 推 qsss:答案已经出来了不是吗? 你把"某储存格"变成变数去接受结果不 03/03 08:43 : → qsss:就是你要的吗? 03/03 08:43 好吧。 事到如今, 也只能全盘托出了@@ 是这样的, 其实原本我只是要做简单的a=a+b这种东西。 a和b其实是两栏储存格, 也就是在B输入想要购买的东西,然後执行巨集时, 把他加入到A栏代表已购买的东西。 其实这我有写出来: Sub Add_in() Dim i As Integer For i = 1 To UBound(Range("已种").Rows().Value) '这是该栏的列数 Range("已种").Rows(i).Value = _ Range("已种").Rows(i).Value + Range("放入推车").Rows(i).Value Next End Sub 问题好像解决了, 但是其实接下来才是我把事情搞得那麽复杂的主因....囧 我在该工作表里面,还写了一个麻烦的东西... 一个4*27 总共108个储存格的自订函数, 每一栏的值都和前一栏的值环环相扣~ 自订函数就算了, 麻烦的是, 自订函数的引数是包含NOW()的运算公式... 好了,这麻烦在哪里? 麻烦在於,每当我执行上述那个Add_in程序的时候, 由於储存格是一个一个改变的, 每改变一个,那108个包含自订函数的储存格都要再运算一遍.. 每按一次巨集,都要等个3秒多.... 让人实在咽不下个口气== 好吧, 那麽我就想说那就把那108个储存格的挥发性改成False好了。 於是在自订函数里面增加 Application.Volatile (Fasle) 嗯嗯,很好! 使用Add_in的时候不会LAG了,不用1秒东西就出来了~ OH YA好欢乐啊~~~ 但 是 ! 我就了为了要把现在的时间也当作变数做考量, 所以才在储存格的公式里面加入NOW()的。 现在储存格变成非挥发性了, 函式所算出来的值,也就不是及时的NOW()了.... 可能是三分钟前、五分钟前,或是根本就是昨天的时间... 这就根本和我原本的目的相违背了啊...囧 於是, 解决得方向就变成有两个: 1. 保持挥发性,但不要让Add_in里面的东西用回圈跑,不要让他一个一个加, 因为每加一次那108格就要再算一次。 我试过用录制巨集的方法,把a和b用阵列公式相加放在另外一格储存格, 然後再用选择性贴上,只把值覆盖到B上面。 这巨集的执行速度比上面那个回圈巨集快很多,一秒左右可以好。 所以我才想说能不能也把阵列公式用在VBA里面。 2. 第二个方法,就是让那108格,变成非挥发。 而在只有需要用到那些数据的时候,才强制他们做运算。 例如当我需要用到那些数据的时候,只要按下某按钮,就让那些储存格重新运算, 让我得到现在时间的值。 我有试过这样的方法: Dim trigger as Boolean Function Adjust_Time(par As Double) As Double Application.Volatile (trigger) . . . End Function 然後,写另外一个SUB: Sub Test() trigger = true Range("G1").Value="这储存格的值变化了,那108格应该也要变化吧?" Trigger = False End Sub 但是还是不行...囧 我还想过各种奇怪的方法, 像是在那108格储存格的公式後面加个假人~例如: Adjust_Time(NOW()+C4/24)+$H$2 那个$H$2就是假人,他的值是0, 然後每当按下test()的时候,就让$H$2的值再一次=0 看看会不会被判断成储存格的值改变了,而重新运算。 但还是失败...囧 总之, 我现在就是卡在这奇怪的地方啦...囧 程式其实是可以动, 只是不漂亮QQ 委曲求全的话,等那3~5秒钟,程式还是可以跑。 但是就是很烦啊(╯‵□′)╯┴─┴ 太丑了QQ 补上: 现在已经不是丑不丑的问题了... 而是我把108格的挥发性打开的话。 我用规划求解想分析时...根本跑不动!!! 所以现在变成一定要把挥发性关起来了... 囧 问题越滚越大....惨烈啊~ -- 伊蝶尔: 「接受命运的人,可以得到幸福 违抗命运的人,可以得到荣耀」 你的选择呢.....? --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.88.67 ※ 编辑: A1pha 来自: 123.194.88.67 (03/03 13:05) ※ 编辑: A1pha 来自: 123.194.88.67 (03/03 13:54)
1F:→ MOONRAKER:我看你打掉用VBA阵列重写比较快,跑起来也会更快 XD 03/03 15:06
2F:→ MOONRAKER:(当然这只是第一眼看到的想法) 03/03 15:06
3F:→ A1pha:XD 我也快放弃了 XD 可能真的就砍掉重练比较快XD 03/03 17:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP