添加唯一值并排除常量值 - 优化公式
Adding Unique values and excluding a constant value - Optimizing formulas
我需要添加唯一值并确保排除常量值(例如 10)
Acct # Value
9xxx123 50
9xxx123 50
9xxx123 10
9xxx123 15
9xxx234 10
9xxx234 25
9xxx234 25
9xxx234 30
答案应该是:9xxx123 = 65 和 9xxx234 = 55
下面的公式给出了我的正确答案:
=SUMPRODUCT((($A$2:$A$9=E2)*$B$2:$B$9)/(COUNTIFS($A$2:$A$9,E2,$B$2:$B$9 ,$B$2:$B$9)+($A$2:$A$9<>E2)))
但是,由于我正在分析的数据集很大,我的计算机需要将近一个小时才能执行所有计算。关于如何优化这个公式有什么建议吗?
谢谢!
狮子座
用户自定义函数怎么样?
Dim cell As Range
Dim mysum As Long, i As Long, j As Long
Dim checkarr As Variant
Function SUMOMITTINGVALUE(accountrange As Range, accountnumber As Range, omitvalue As Long) As Long
mysum = 0
j = 0
ReDim checkarr(0 To 0)
For Each cell In accountrange
If cell.Value = accountnumber And _
cell.Offset(, 1).Value <> omitvalue Then
For i = 0 To UBound(checkarr)
If checkarr(i) = cell.Offset(, 1).Value Then
Exit For
ElseIf i = UBound(checkarr) Then
mysum = mysum + cell.Offset(, 1).Value
checkarr(j) = cell.Offset(, 1).Value
j = j + 1
ReDim Preserve checkarr(0 To j)
End If
Next i
End If
Next cell
SUMOMITTINGVALUE = mysum
End Function
我需要添加唯一值并确保排除常量值(例如 10)
Acct # Value
9xxx123 50
9xxx123 50
9xxx123 10
9xxx123 15
9xxx234 10
9xxx234 25
9xxx234 25
9xxx234 30
答案应该是:9xxx123 = 65 和 9xxx234 = 55
下面的公式给出了我的正确答案:
=SUMPRODUCT((($A$2:$A$9=E2)*$B$2:$B$9)/(COUNTIFS($A$2:$A$9,E2,$B$2:$B$9 ,$B$2:$B$9)+($A$2:$A$9<>E2)))
但是,由于我正在分析的数据集很大,我的计算机需要将近一个小时才能执行所有计算。关于如何优化这个公式有什么建议吗?
谢谢!
狮子座
用户自定义函数怎么样?
Dim cell As Range
Dim mysum As Long, i As Long, j As Long
Dim checkarr As Variant
Function SUMOMITTINGVALUE(accountrange As Range, accountnumber As Range, omitvalue As Long) As Long
mysum = 0
j = 0
ReDim checkarr(0 To 0)
For Each cell In accountrange
If cell.Value = accountnumber And _
cell.Offset(, 1).Value <> omitvalue Then
For i = 0 To UBound(checkarr)
If checkarr(i) = cell.Offset(, 1).Value Then
Exit For
ElseIf i = UBound(checkarr) Then
mysum = mysum + cell.Offset(, 1).Value
checkarr(j) = cell.Offset(, 1).Value
j = j + 1
ReDim Preserve checkarr(0 To j)
End If
Next i
End If
Next cell
SUMOMITTINGVALUE = mysum
End Function