Я пытаюсь построить модель для оценки прибыли от нескольких продуктов. Для этого мне нужно найти последнюю строку, а затем сложить диапазон от первой строки до последней строки.
Сначала количества различных продуктов создаются в С6 до последней строки. столбца C. Расчеты начинаются с CV6 до последней строки столбца, CW6 - до последней строки столбца CW ... и т. Д.
LastRow = shmodel.Cells.Find(what:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row
Далее я должен определить строки:
Dim lastrowCV As String
Dim lastrowCW As String
lastrowCV = shmodel.Cells(Rows.Count, 99).End(xlUp).Row + 1
lastrowCW = shmodel.Cells(Rows.Count, 100).End(xlUp).Row + 1
Затем я должен рассчитать общее количество, например C6 - C18
. Для этого:
Dim cel1 As String, cel2 As String
'Get quantity per flow
shmodel.Range("CV6").FormulaR1C1 = "=RC[-97]"
shmodel.Range("CV6").AutoFill Destination:=Range("CV6" & ":" & "CV" & LastRow)
Этот код работает нормально, VBA выдает правильную последнюю строку.
'total quantity
cel1 = shmodel.Range("CV6").Address
cel2 = shmodel.Range("CV" & (lastrowCV - 1)).Address
shmodel.Range("CV" & lastrowCV).Formula = "=sum(" & (cel1) & ":" & (cel2) & ")"
Этот код также подходит, VBA говорит, что последняя строка = 18 и суммирует общее количество в CV19.
Теперь у меня есть правильное количество в CV6 до последней строки столбца CV. В предыдущей строке, 6 д.е., у меня есть затраты на продукт. У меня есть формула, подобная этой:
shmodel.Range("CW6").FormulaR1C1 = "=RC100*RC99"
shmodel.Range("CW6").AutoFill Destination:=Range("CW6" & ":" & "CW" & LastRow)
Это тоже хорошо работает, VBA говорит, что последняя строка = CW18. Но теперь проблема возникает, когда я пытаюсь суммировать CW6 до последней строки столбца CW.
cel1 = shmodel.Range("CW6").Address
cel2 = shmodel.Range("CW" & (lastrowCW - 1)).Address
shmodel.Range("CW" & lastrowCW).Formula = "=sum(" & (cel1) & ":" & (cel2) & ")"
Когда я запускаю код, VBA говорит для последней строки CW6 = CW6, тогда как предыдущая формула VBA говорит последний ряд CW6 = CW18. Эта проблема возникает из-за формул в CW6? Или это связано с форматированием чисел?
И как мне суммировать, например, CW6 до последней строки столбца CW, если CW8, например, пусто из-за VLookup, так что VBA по-прежнему видит CW18 как последний строка