【发布时间】:2012-10-28 16:23:13
【问题描述】:
我收到了一组包含优惠券级别的航空公司税收数据的数据,我不得不将联运税从 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
错误总和: 总和 = 0 结束函数
【问题讨论】:
-
不了解全部情况,但通常这是
SUMIFS的任务 -
为了让事情运行起来,我编写了一个 VBA 函数来满足我的需要(见上文)
标签: excel sum range conditional-statements