楼主: lam_fukming
915 4

[问答] VBA 高手请进 [推广有奖]

  • 3关注
  • 9粉丝

博士生

14%

还不是VIP/贵宾

-

威望
0
论坛币
5901 个
通用积分
0.5582
学术水平
43 点
热心指数
43 点
信用等级
40 点
经验
94540 点
帖子
328
精华
0
在线时间
0 小时
注册时间
2011-8-29
最后登录
2015-8-31

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
VBA 中 scalar * martirx 報错???




Function abc(x As Range)

Dim m As Integer, n As Integer
m = x.Rows.Count
n = x.Columns.Count

Dim matrix()
Redim matrix(1 To m, 1 To n)
For i = 1 To m
For j = 1 To n
matrix(i, j) = x(i, j)
Next j
Next i

Dim sum As Single
sum = Application.WorksheetFunction.sum(matrix)

Dim norm()
ReDim norm(1 To m, 1 To n)
For i = 1 To m
For j = 1 To n
norm(i, j) = matrix(i, j) / sum                <--REPORTING ERROR HERE!!!
Next i
Next j

abc = norm
End Function
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:VBA Application worksheet function Integer matrix

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
wocacawo + 1 + 1 + 1 鼓励积极发帖讨论

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

大道無門,
千差有路,
透得此關,
乾坤獨步﹗
沙发
fftangwen 发表于 2013-6-19 17:33:56 |只看作者 |坛友微信交流群
norm(i, j) = matrix(i, j) / sum                <--REPORTING ERROR HERE!!!
Next j
Next i

你把 i  j  的循环次序弄反了,改成先next j 后next i就ok了
或者直接next后面不加ij也可以
另外,当sum为0的时候会溢出,建议加个if sum <>0

使用道具

藤椅
lam_fukming 发表于 2013-6-24 20:45:14 |只看作者 |坛友微信交流群
fftangwen 发表于 2013-6-19 17:33
norm(i, j) = matrix(i, j) / sum
1.png

How about the following one?
Actually, x = A*B*Transpose(A) should be a scalar, but I can't do something likes 5*x, x^2, sin(x), ...
What is the problem?


Sub a()
x = Application.WorksheetFunction.MMult(Application.WorksheetFunction.MMult(Range("a2:b2"), Range("D2:E3")), Application.WorksheetFunction.Transpose(Range("A2:b2")))
Range("a5") = Sqr(x)       <-- Reporting Error Here!!!
End Sub


大道無門,
千差有路,
透得此關,
乾坤獨步﹗

使用道具

板凳
fftangwen 发表于 2013-7-1 14:16:32 |只看作者 |坛友微信交流群
x is a matrix
so u can't do x^2 or sqrt(x)
u can change it as : range("a5").value=x

使用道具

报纸
fftangwen 发表于 2013-7-1 14:58:49 |只看作者 |坛友微信交流群
also  u can :
Sub a()
x = Application.WorksheetFunction.MMult(Application.WorksheetFunction.MMult(Range("a2:b2"), Range("D2:E3")), Application.WorksheetFunction.Transpose(Range("A2:b2")))
x=applicatiion.mdeterm(x)
Range("a5") = Sqr(x)   
End Sub

已有 1 人评分经验 学术水平 热心指数 收起 理由
ermutuxia + 10 + 1 + 1 对论坛有贡献

总评分: 经验 + 10  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 20:49