全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
1118 4
2013-06-19
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
二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

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


二维码

扫码加我 拉你入群

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

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

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
二维码

扫码加我 拉你入群

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

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

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

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群