2012-11-08 37 views
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 machting條件: 「A_CELL.OFFSET (0,-1)= [稅碼]和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 端功能

+2

不明白整個情況,但通常這是'SUMIFS'的一項任務 – Jook

+0

爲了讓事情順利運行,我編寫了一個VBA函數,它可以滿足我的需求(請參見上文) –

回答

0

好了,你的VBA的伎倆。

但是,使用VBA始終是一個很大的問題。所以這裏是我的解決方案使用公式:

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

這是爲您的示例屏幕截圖的單元格B15。你可以把它粘貼下來。

如果你想將它粘貼到右邊,你需要適應一下。

+0

感謝您的回覆Jook。然而,它似乎返回0(Office 2012預覽版) 我沒有更多地關注excel公式,因爲我給出的截止日期是明天中午,所以VBA現在必須要這樣做;) 但是我要去找它,因爲它困擾着我,我找不到一個具有相同效果的公式 –

+0

@AkiraTakizawa - 呃,我犯了一個小錯誤 - 它是B $ 14而不是B $ 13 - 修正了它。 – Jook

相關問題