VBA дает другую последнюю строку при попытке суммировать строки, содержащие (vlookup) и формулы - PullRequest
0 голосов
/ 08 апреля 2020

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

Сначала количества различных продуктов создаются в С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 как последний строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...