好吧,你可以用一个公式来做到这一点,但它的可扩展性不是很好。例如,您可以这样做:
=SUM(MIN(A1:B1),MIN(A2:B2),MIN(A3:B3), MIN(A4:B4))
这将适用于您描述的情况。但是,我很欣赏如果您有大量行,那么这将无法很好地扩展。在这种情况下,我认为您将需要一个 VBA 宏,因为我看不到这样做的方法。我准备被一些 Excel 公式大师纠正。
对于 VBA 解决方案,您可以尝试以下方法(在OzGrid 论坛中找到):
Function sumOfMax(ByVal inputRange As Range, Optional doMin As Boolean) As Double
Dim inRRay As Variant
Dim currentMax As Double
Dim i As Long, j As Long
Set inputRange = Application.Intersect(inputRange, inputRange.Parent.UsedRange)
If Nothing Is inputRange Then Exit Function
inRRay = inputRange.Value
For i = 1 To UBound(inRRay, 1)
currentMax = Val(inRRay(i, 1))
For j = 1 To UBound(inRRay, 2)
If (Val(inRRay(i, j)) > currentMax) Xor doMin Then currentMax = Val(inRRay(i, j))
Next j
sumOfMax = sumOfMax + currentMax
Next i
End Function
当设置为TRUE
时,可选参数计算最小值,而不是该宏默认计算的最大值。在您的示例中,您需要像这样调用它:
=sumOfMax(A1:B4, TRUE)
请记住,您需要将代码放在标准代码模块中。