
'权重这样拆分觉得会更合理些
Option Explicit
Sub abc()
Dim a, i, j, p
a = Range("a2:c" & ActiveSheet.UsedRange.Rows.Count - 1).Value
ReDim b(1 To UBound(a), 1 To 1), n(UBound(a, 2))
For i = 1 To UBound(a)
For j = 1 To 3
If Len(a(i, j)) Then p = p + 1: n(p) = j
Next
If p = 1 Then
b(i, 1) = a(i, n(p))
ElseIf p = 2 Then
If n(1) = 1 And n(2) = 2 Then '1,2
b(i, 1) = a(i, 1) * 0.5 + a(i, 2) * 0.5
ElseIf n(1) = 1 And n(2) = 3 Then '1,3
b(i, 1) = a(i, 1) * (0.4 + 0.4 ^ 2 / (0.4 + 0.2)) + _
a(i, 3) * (0.2 + 0.2 * 0.4 / (0.4 + 0.2))
Else '2,3
b(i, 1) = a(i, 2) * (0.4 + 0.4 ^ 2 / (0.4 + 0.2)) + _
a(i, 3) * (0.2 + 0.4 * 0.2 / (0.4 + 0.2))
End If
ElseIf p = 3 Then
b(i, 1) = a(i, 1) * 0.4 + a(i, 2) * 0.4 + a(i, 3) * 0.2
End If
If Len(b(i, 1)) Then b(i, 1) = Round(b(i, 1), 1)
p = 0
Next
[e2].Resize(UBound(b)) = b
End Sub