首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定范围匹配复杂条件下任一单元格的和

给定范围匹配复杂条件下任一单元格的和
EN

Stack Overflow用户
提问于 2012-11-08 13:15:53
回答 1查看 228关注 0票数 0

我得到了一套包含航空公司优惠券税数据的数据,我不得不将可兑换税从YQ中分离出来,并将其转换成欧元和美元。经过1100行的VBA完成报告的要求,我必须作出的总和,我完成了。

基本上,税收数据反映了你在截图@ http://i.imgur.com/qnOWg.jpg中看到的内容,但规模要大得多。我需要把每一个可能的税号从数据中取出来,然后算出总数,这就是我陷入困境的地方。如果数据是按税号顺序排列的,按税号计算的税号就不会有多大问题,但由于这是根本不需要的,而且在优惠券没有特定税种时会创建更多的列:

代码语言:javascript
复制
YQ BE IT HB EX MJ VT
YQ BE DE RA

将成为:

代码语言:javascript
复制
YQ BE IT HB EX MJ VT
YQ BE                DE RA

首选第一种更紧凑的视图。

无论如何,我如何计算每种税的金额取决于货币?据我所知,这是一个基于两个条件的总和:对于范围内的任何单元格:

对A2:L12范围内的任何单元格的和进行处理,条件是:"A_CELL.OFFSET(0,-1) =税收代码和THAT_SAME_CELL.OFFSET(0,1) =货币“

有人能帮我做这件事吗?

提前谢谢你。干杯!

Update:用于获得所需结果的VBA函数:

代码语言:javascript
复制
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端函数

EN

回答 1

Stack Overflow用户

发布于 2012-11-08 14:19:11

好吧,你的VBA能做到这一点。

然而,使用VBA总是一个很大的问题。下面是我使用公式的解决方案:

代码语言:javascript
复制
=SUMIFS(B$2:B$12,A$2:A$12,$A15,C$2:C$12,B$14)

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

如果你想把它粘贴到右边,你需要稍微修改一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13289605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档