VBA如果报表凝结

问题描述:

的Excel 2015年,进入2015年VBA如果报表凝结

一般状态:

if s=t then 
    LD = 0 
    Exit Function 
end if 

现状:

If s = t Then: LD = 0: Exit Function 

目标: 有没有办法凝聚多个条件语句为一个行本质上没有歪曲回报?我正在寻找更优雅的解决方案。


启示:C代码从https://en.wikipedia.org/wiki/Levenshtein_distance

for (int j = 0; j < t.Length; j++) 
{ 
    var cost = (s[i] == t[j]) ? 0 : 1; 
    v1[j + 1] = Minimum(v1[j] + 1, v0[j + 1] + 1, v0[j] + cost); 
} 

变成这样在VBA:

For j = 0 To Len(t) - 1 
    If Mid$(s, i + 1, 1) = Mid$(t, j + 1, 1) Then cost = 0 Else cost = 1 
    v1(j + 1) = VBAMin(v1(j) + 1, v0(j + 1) + 1, v0(j) + cost) 
Next j 
+3

复杂的单衬里___not___是“优雅” – nabuchodonossor

+0

你的意思是,除了使用像一个'选择Case'?在某些情况下,这可能会提供更优雅的解决方案。我还发现条件可以比正常的If-Then条件语句更灵活一些。 – Demetri

+0

@nabuchodonossor我一般同意,但我发现自己使用像Dim v0():ReDim v0(0 To Len(t))这样的东西,我不能在一行中创建一个带有变量dims的数组,但想要浓缩功能分为功能组。我猜编码器对** Complex **有什么最后的发言权,我认为两个结果条件不是...... – Schalton

试试这个

cost = IIf(Mid$(s, I + 1, 1) = Mid$(t, J + 1, 1), 0, 1) 
+0

非常酷,我在Access中使用了IIF,但没有使用VBA – Schalton

+0

这就是你所要的目标,如果有的话请帮助保持网站更新并确认答案。谢谢... – EEM

有时候我不喜欢的东西下面:

(我知道大多数人会认为这是编程不佳)

If s = t _ 
     Then LD = 0:Exit Function _ 
     Else If a=b _ 
       Then LD = 1 _ 
       Else If c=d then LD = 2 Else LD = 3:Exit Function 
+0

我更新了我的原始问题,并提供了一个更好的例子,我正在努力领导。感谢您的输入 – Schalton