2011-12-14 5 views
4

У меня есть несколько столбцов, которые содержат информацию об образце, как указано ниже:Сумма значений со строками

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

Из всей таблицы (без создания другого столбца), я хотел бы суммировать все значения, которые содержат письмо «R». Учитывая пример таблицы выше, число должно быть: 72. Я пробовал множество различных подходов:

  • Doing прямую сумму даст «0» (как и ожидалось)
  • Попробовал расколоть письмо число с комбинацией влево/вправо/LEN, но требуется еще один столбец
  • Использование SUMIF будет работать только с пронумерованными диапазонов (если кто-то может показать мне применить функцию заранее без дополнительной колонки)
  • SUMPRODUCT не помогло
  • Просмотрено в vlookup/hlookup. Не дали желаемых результатов

Как я могу достичь этого без каких-либо дополнительных столбцов? Ячейки также могут быть пустыми, и я хотел бы обрабатывать их как нули, если это возможно.

+0

Вы нормально с макросом? – Ian

ответ

6

Используйте этот массив формула:

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

A2: D4 является вся ваша таблица. Введите формулу, нажав Ctrl + Shift + Enter.

+1

Это именно то, что мне нужно. Спасибо. – Charlie

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

Смежные вопросы