2016-06-16 1 views
-1

У меня есть другая определенная категория (столбец A) на листе, и эти категории распространяются по всей спецификации (F3: I14).Проверить, существует ли значение ячейки в листе excel, а затем получить значения нижних ячеек и добавить его

Я хочу добавить значение для каждой категории (a, b, c, d, e, f) из ячейки F3: I14, которая написана ниже в столбце Assigned (столбец C).

Например: Для категории a добавьте все числа из ячейки F3: I14, которая написана под ячейкой C2.

enter image description here

Я попробовал формулу ВПР, но это не сработало.

ответ

4

Для использования формулы ответа этого массива формула:

=SUM(IF($F$3:$I$14=A2,$F$4:$I$15)) 

Будучи формулой массива она должна быть подтверждена с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования. Если все сделано правильно, то excel поместит {} вокруг формулы.

enter image description here

3

Я upvoted ответ Скотт Крейнером, как я думаю, что это самое лучшее, чистое решение. Но по мере того как вы отметили этот вопрос «VBA», я подумал, что я дам ему чисто программирующее решение с VBA. Если ничего другого, это иллюстрирует, насколько мощно простая хорошая формула, такая как Скотт!

Sub SumCategories() 
    Const startColumn As Integer = 6 'F 
    Const endColumn As Integer = 9 'I 
    Const startRow As Integer = 3 
    Const endRow As Integer = 14 

    Const categoryColumn As Integer = 1 'A 
    Const assignedColumn As Integer = 3 'C 
    Dim categoryRow As Integer 
    categoryRow = 2 

    Dim categoryTotalAssigned As Integer 
    categoryTotalAssigned = 0 

    Dim currentCategory As String 
    currentCategory = ActiveSheet.Cells(categoryRow, categoryColumn) 

    While Not currentCategory = "" 
     'Loop through all data to sum totals 
     For c = startColumn To endColumn 
      For r = startRow To endRow Step 2 'Look in every other row 
       If ActiveSheet.Cells(r, c) = currentCategory Then 
        categoryTotalAssigned = categoryTotalAssigned + ActiveSheet.Cells(r + 1, c) 
       End If 
      Next r 
     Next c 

     'Write total for category 
     ActiveSheet.Cells(categoryRow, assignedColumn) = categoryTotalAssigned 

     'Move to next row 
     categoryRow = categoryRow + 1 

     'Reset total for next category 
     categoryTotalAssigned = 0 

     'Get next category 
     currentCategory = ActiveSheet.Cells(categoryRow, categoryColumn) 
    Wend 
End Sub 

Result of VBA Script

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