【问题标题】:Sum of any cell in given range matching complex condition给定范围内匹配复杂条件的任何单元格的总和
【发布时间】: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


【解决方案1】:

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

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

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

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

如果要粘贴到右边,需要稍微调整一下。

【讨论】:

  • 感谢您的回复 Jook。但是它似乎返回 0(Office 2012 预览版)我没有更多地关注 excel 公式,因为我给出的最后期限是明天中午,所以 VBA 现在必须做这个把戏;)但我反正我会找它,因为它让我很困扰我找不到具有相同效果的公式
  • @AkiraTakizawa - 嗯,我犯了一个小错误 - 它必须是 14 美元而不是 13 美元 - 更正了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
相关资源
最近更新 更多