全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
1922 0
2019-07-04
excel运行宏时老是第一行就出现Sub or function not defined 的错误,不知道是什么原因,我这个是用RAS方法调矩阵的行和和列和

Sub RAS2()
'
' RAS2 Macro
' 宏由 *** 录制,时间: 2019/07/04
'
Sheets("Sheet1").Select
Dim G(70, 70)
Dim A(70, 70)
Dim Row(70)
Dim Col(70)
Dim ba As Double
ba = 1
For i = 1 To 70
    Row(i) = Sheets("sheet1").Cell(i + 1, 71).Value
   For j = 1 To 70
    G(i, j) = Cells(i + 1, j + 1).Value
    A(i, j) = G(i, j)

Next j
Next i
For j = 1 To 70
   Col(j) = Sheet("Sheet1").Cells(71, j + 1)
Next j
rsum = 0
csum = 0
For i = 1 To 70
    rsum = rsum + Row(i)
Next i
For j = 1 To 70
    csum = csum + Col(j)
Next j
If csum <> rsum Then
ba = rsum / csum
For j = 1 To 70
Col(j) = Col(j) * ba
Next j
End If
iter = 0
Top:
  iter = iter + 1
  rdismax = 0
  cdisma = 0
For j = 1 To 70
csum = 0
For i = 1 To 70
csum = csum + A(i, j)
Next i
If (Abs(csum) > 0) Then
csum = Col(j) / csum
Else: csum = 0
End If
For i = 1 To 70
A(i, j) = A(i, j) * csum
Next i
dis = Abs(csum - 1)
If (dis > cdismax) Then
cdismax = dis:
cdis = csum - 1:
jmax = j
End If
Next j
For i = 1 To 70
rsum = 0
For j = 1 To 70
rsum = rsum + A(i, j)
Next j
If (Abs(rsum) > 0) Then
rsum = Row(i) / rsum
Else: rsum = 0
End If
For j = 1 To 70
A(i, j) = A(i, j) * rsum
Next j
dis = Abs(rsum - 1)
If (dis > rdismax) Then
rdismax = dis:
rdis = rsum - 1:
imax = i
End If
coutinue: Next i
If (cdusmax > rdismax) Then
dismax = cdismax
Else: dismax = rdismax
End If
If (iter < 50000 And dismax > 0.000001) Then
GoTo Top
End If
If (dismax > 0.000001) Then
Beep
End If
Cells(74, 1) = ba
For i = 1 To 70
For j = 1 To 70
If Row(i) = 0 Then
Cells(i + 74, j + 1).Value = 0
Else: Cells(i + 74, j + 1).Vlaue = A(i, j) * ba
End If
Next j
Next i
Beep
Worksheets("sheet1").Activate
'
End Sub

屏幕截图(50).png




二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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