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

时间:2012-11-08 13:15:54

标签: excel sum range conditional-statements

我获得了一组包含优惠券级别的航空税数据的数据,并且必须从YQ中分配可转让税,并将转换为欧元和美元。在大约1100行的VBA按要求完成报告之后,我要做总结并且我已经完成了。

基本上,税务数据会重新分析您在截屏@ http://i.imgur.com/qnOWg.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)= [税码] AND 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 结束功能

1 个答案:

答案 0 :(得分:0)

好的,你的VBA可以解决问题。

但是,使用VBA始终是对问题的一种支持。所以这是我使用公式的解决方案:

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

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

如果要将其粘贴到右侧,则需要稍微调整一下。