0

我得到了一组包含优惠券级别的航空公司税数据的数据,我不得不从 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) = [tax code] AND THAT_SAME_CELL.OFFSET(0,1) = [currency]”

有人可以帮我完成这件事吗?

先感谢您。干杯!

更新:用于获得所需结果的 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 结束函数

4

1 回答 1

0

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

但是,使用 VBA 始终是一大难题。所以这是我使用公式的解决方案:

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

这是用于示例屏幕截图的单元格 B15。你可以把它贴下来。

如果要将其粘贴到右侧,则需要对其进行一些调整。

于 2012-11-08T14:19:11.947 回答