2011-12-14 87 views
4

我有包含樣本信息,下面列出多個列:總和與絃樂

A | B | C | D 
------------------------ 
23R | 12C | 4D | 35R 
12C | 76T | 14T | 19D 
32C | 56D | 14R | 68D 
... | ... | ... | ... 
etc | etc | etc | etc 

從整個表(而無需創建另一列),我想總結一下所有包含的值字母「R」。鑑於上面的例子表,這個數字應該是:72.我已經嘗試不同的方法衆多:

  • 做直總和將產生「0」(如預期)
  • 試圖分裂從信用左/右/ LEN組合的數量,但這需要另一列
  • 使用SUMIF將只與編號範圍內工作(除非有人能告訴我事先應用功能,無需額外的列)
  • SUMPRODUCT沒有幫助
  • 看着vlookup/hlookup。沒有產生任何期望的結果

我怎樣才能實現這一點,沒有任何額外的列?單元格也可以是空白的,如果可能的話我想將它們作爲零來處理。

+0

你沒事了宏? – Ian 2011-12-14 01:23:51

回答

6

使用此陣列式:

=SUM(IF(RIGHT(A2:D4,1)="R",VALUE(LEFT(A2:D4,LEN(A2:D4)-1)),0)) 

A2:D4是整個表。按Ctrl + Shift + Enter輸入公式。

+1

這正是我所需要的。謝謝。 – Charlie 2011-12-14 06:49:24

1

Excellll提供了一個很好的配方。這是一個VBA函數,它也會這樣做。你會這樣稱呼它:

=CountR(A2:D4) 'in your example becomes 72 

代碼:

Function CountR(ByVal cell_range As Range) As Long 

Dim i As Long, j As Long, total As Long 
Dim varray As Variant 
varray = cell_range.Value 

For i = 1 To UBound(varray, 1) 
    For j = 1 To UBound(varray, 2) 
     If Right$(varray(i, j), 1) = "R" Then 
      total = total + Left$(varray(i, j), Len(varray(i, j)) - 1) 
     End If 
    Next 
Next 

CountR = total 

End Function 
+0

謝謝。當我深入研究這個電子表格時,我會保留這個VBA函數供將來使用。 – Charlie 2011-12-14 06:50:22