2015-02-16 2 views
1

Извинения заранее за это, я очень новичок в VBA, и я уверен, что это простое кодирование, с которым я борюсь.Добавить общее количество в столбец, где заголовок строки соответствует критериям

На основании заданного пользователем количества месяцев (только что введенного в таблицу) У меня есть строка заголовков столбцов с указанием номера месяца и заголовка «Всего» после последнего месяца.

Т.е. пользователь говорит 12 месяцев, ячейка A2 = «Янв-15» и M2 = «Всего».

Под заголовками пользователь затем добавляет некоторые данные о продажах.

Что мне нужно сделать, это использовать VBA, чтобы добавить итог в конец каждой из строк данных, где header = "total".

Я думал, что If If имеет смысл, но я борюсь с тем, как заставить макрос поместить формулу в правильную ячейку, а затем получить формулу в диапазоне переменных. Это лучшее, что я придумал до сих пор (не смейтесь!)

Sub Add_total() 
Dim criteria As String 
criteria = Range("A:A").Value 
If criteria = "Total" Then 
Range("12:12").Select 
ActiveCell.Formula = "=sum($c12:c12)" 
End If 
End Sub 

То, что я хотел бы это, к примеру, где М2 = «Total», то С12 = сумма (c1 : L12)

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

Любая помощь очень ценится.

ответ

0

Почему бы не просто положить в ячейку M3 функцию =sum(A3:L3) и скопировать вниз?

Если вам это нужно в VBA все равно это должно работать:

Sub testsum() 
i = 3 'start in cell3 
While Not IsEmpty(Cells(i, 1)) 
Cells(i, 13) = WorksheetFunction.Sum(Range((Cells(i, 1)), (Cells(i, 12)))) 
i = i + 1 
Wend 
End Sub 
+0

Действительно жаль о редактировании на это, по некоторым причинам я не могу добавить строку ... Большое спасибо за это - не совсем то, что Мне нужно, но ты указал мне в направлении. В конце концов: «Sub Total() Set Find_total = Range (« 6: 6 »). Find (« Всего », LookIn: = xlValues, searchorder: = xlByColumns) Установите Revenue_total = Find_total.Offset (rowoffset: = 3, columnoffset: = - 1) Set Revenue_cell = Find_total.Offset (rowoffset: = 3, columnoffset: = 0) Revenue_cell = WorksheetFunction.Sum (Range ((Ячейки (9, 2)), Revenue_total)) End Sub ' – RDarro

0

Большое спасибо за это - не совсем то, что мне было нужно, но ты указал мне в этом направлении. Пошел следующее в конце:

Sub Total() Set Find_total = Range("6:6").Find("Total",_ 
LookIn:=xlValues,searchorder:=xlByColumns) 
Set Revenue_total = Find_total.Offset(rowoffset:=3, columnoffset:=-1) 
Set Revenue_cell = Find_total.Offset(rowoffset:=3, columnoffset:=0) 
Revenue_cell = WorksheetFunction.Sum(Range((Cells(9, 2)), Revenue_total)) 
End Sub 

Еще раз спасибо