在给定范围匹配的复杂条件下的任何单元的总和



i获得了一组包含优惠券水平的航空公司税收数据的数据,必须将可与之相互的税分开,并将转换为欧元和美元。经过约1100行VBA,可以根据需要完成报告,我完成了总和。

基本上,税收数据将您在屏幕截图 @ https://i.stack.imgur.com/s6kgi.jpg中看到的内容,但规模更大。我需要从数据中删除每个可能的税法并赚钱,这就是我卡住的地方。如果数据是在列中订购的,则按税法税法并不是什么大问题,但是由于这根本不是必需的,并且当优惠券没有某些税:

YQ BE IT HB EX MJ VT
YQ BE DE RA

将成为:

YQ BE IT HB EX MJ VT
YQ BE                DE RA

首先优选的第一个更紧凑的视图。

无论如何,如何根据货币为每种类型的税金赚钱?据我了解,这是一个基于两个条件的总和:对于该范围内的任何单元格:

在范围内的总和A2:l12 赚取条件:" a_cell.offset(0,-1)= [税号]和that_same_cell.offset(0,1)= [货币]

有人可以帮助我完成此操作吗?

预先感谢您。欢呼!

更新:使用用于结果的VBA功能:

Function SumOf(taxStr As String, curStr As String, wrkRange As Range) As Double
Dim taxSum As Double
Dim rngCell As Range
On Error GoTo SumOfError
taxSum = 0
'Set wrkRange = rangStr
For Each rngCell In wrkRange
            If rngCell.Column > 1 And rngCell.Offset.Column < wrkRange.Columns.Count - 1 Then
        If (rngCell.Offset(0, -1).Value = taxStr) And (rngCell.Offset(0, 1).Value = curStr) Then
            taxSum = taxSum + Val(rngCell.Value)
        End If
    End If
Next rngCell
SumOf = taxSum
Exit Function

sumoferror: sumof = 0结束功能

好吧,您的VBA可以做技巧。

但是,使用VBA始终是一个很大的问题。因此,这是我使用公式的解决方案:

=SUMIFS(B$2:B$12,A$2:A$12,$A15,C$2:C$12,B$14)

这是针对示例屏幕截图的单元格B15。您可以将其粘贴。

如果您想向右粘贴它,则需要对其进行一些调整。

最新更新