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
答
有时候我不喜欢的东西下面:
(我知道大多数人会认为这是编程不佳)
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
复杂的单衬里___not___是“优雅” – nabuchodonossor
你的意思是,除了使用像一个'选择Case'?在某些情况下,这可能会提供更优雅的解决方案。我还发现条件可以比正常的If-Then条件语句更灵活一些。 – Demetri
@nabuchodonossor我一般同意,但我发现自己使用像Dim v0():ReDim v0(0 To Len(t))这样的东西,我不能在一行中创建一个带有变量dims的数组,但想要浓缩功能分为功能组。我猜编码器对** Complex **有什么最后的发言权,我认为两个结果条件不是...... – Schalton