将Excel公式转换为VBA

时间:2018-11-22 12:37:12

标签: excel vba

我为特定工作创建了此公式,我想将其转换为vba,请帮忙吗?

公式1:

  

= MIN(INDEX(距离; MATCH(Q1_Ville1; Villes2; 0); MATCH(Q1_Ville2; Villes1; 0)); INDEX(距离; MATCH(Q1_Ville1; Villes2; 0); MATCH(Q1_Ville3; Villes1; 0) ); INDEX(Distances; MATCH(Q1_Ville2; Villes2; 0); MATCH(Q1_Ville3; Villes1; 0)))

公式2:

  

= MAX(INDEX(距离; MATCH(Q1_Ville1; Villes2; 0); MATCH(Q1_Ville2; Villes1; 0)); INDEX(距离; MATCH(Q1_Ville1; Villes2; 0); MATCH(Q1_Ville3; Villes1; 0) ); INDEX(Distances; MATCH(Q1_Ville2; Villes2; 0); MATCH(Q1_Ville3; Villes1; 0)))

公式3:

  

= MIN(INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville2; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville3; Villes1; 0) ); INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville4; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville2; Villes2; 0); MATCH(Q2_Ville3; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville3; Villes2; 0); MATCH(Q2_Ville4; Villes1; 0)))

公式4:

  

= MAX(INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville2; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville3; Villes1; 0) ); INDEX(距离; MATCH(Q2_Ville1; Villes2; 0); MATCH(Q2_Ville4; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville2; Villes2; 0); MATCH(Q2_Ville3; Villes1; 0)); INDEX(距离; MATCH(Q2_Ville3; Villes2; 0); MATCH(Q2_Ville4; Villes1; 0)))

2 个答案:

答案 0 :(得分:0)

第一个公式可能会转换为VBA,其他您现在可以自己做

Function MinRabiai(dist As Range, Q1V1 As Range, Q1V2 As Range, Q1V3 As Range, Villes1 As Range, Villes2 As Range) As Long
With Application.WorksheetFunction
MinRabiai = .Min(.Index(dist, .Match(Q1V1, Villes2, 0), .Match(Q1V2, Villes1, 0)), _
.Index(dist, .Match(Q1V1, Villes2, 0), .Match(Q1V3, Villes1, 0)), .Index(dist, _
.Match(Q1V2, Villes2, 0), .Match(Q1V3, Villes1, 0)))
End With
End Function

Sub tst()
MsgBox MinRabiai(Range("Distances"), Range("Q1_Ville1"), Range("Q1_Ville2"), Range("Q1_Ville3"), Range("Villes1"), Range("Villes2"))
End Sub

答案 1 :(得分:-1)

首先,使用Record_Macro记录您的公式,然后您可以在excel中看到它的可视化基本编辑器