Добрый день знатоки! Подскажите как переменной присвоить результат вычисления формулы вида
Код
=(ВПР(.....) + ([rc4]/100)*([rc6]/100))*2
сейчас делаю через вставку в ячейку формулы, потом переменной присваиваю значение ячейки и потом уже использую переменную. Можно как то избежать вставки формулы в ячейку?
Santiago, здравствуйте! Вычисляйте внутри макроса и вставляйте уже значение:
Код
Sub t ()
ActiveCell.Value2=WorksheetFunction.VlookUp(…) + 2*(Range("A1").Value2/100 * Range("C4").Value2/100)
End Sub
WorksheetFunction.VlookUp() в коде также можно заменить на "чистый" VBA, но это уже вопрос для другой темы, в которой вы покажете ЧТО именно нужно сделать (какой результат получить)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
это и есть "вставка" значения, только не вставка, как вы через Ctrl+V делаете, а, скорее "присвоение" ячейке указанных данных
P.S.: код оформляется тэгом "<…>" на панели и делать такие пропуски между строками совсем не нужно Название темы:Вычисления внутри макроса по формуле и вывод результат на лист
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Santiago: Присвоить переменной результат вычисления формулы
в таком случае, ответ готов
Код
Sub t()
Dim a
a=12*6
MsgBox a
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
вместо a = "=SUMPRODUCT((INDEX( должно быть что-то вроде a = WorksheetFunction.SUMPRODUCT((WorksheetFunction.INDEX( При работе с функциями листа в ВБА ссылки на ячейки будут другие (я показал в первом ответе). Я так работать не люблю, поэтому ждите пока кто-то другой вам "расжуёт"
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Добрый день всем! Хочу продолжить тему. У меня такая-же задача. Нужно присвоить переменной результат поиска функцией ВПР в закрытом файле. Пишу пользовательскую функцию, которая в зависимости от значения переменной Vyrobce ищет Prohlaseni для Reference на одном из листов базы данных BAZA. И, пока что уперся в проблему, что VBA выдает ошибку компиляции. Ругается на на апостроф 'D:. Я не понимаю в чем проблема. Помогите , пожалуйста.
Код
Function Prohlaseni(Vyrobce As Variant, Reference As Variant) As Variant
Select Case Vyrobce
Case GOI
Prohlaseni = WorksheetFunction.VlookUp(Reference,'D:\[BAZA.xlsx]DPG'!$D$5:$G$1000,4,0)
Case FINKLEY
Prohlaseni = WorksheetFunction.VlookUp(Reference,'D:\[BAZA.xlsx]DPF'!$D$5:$G$1000,4,0)
Case STEEL
Prohlaseni = WorksheetFunction.VlookUp(Reference,'D:\[BAZA.xlsx]DPS'!$D$5:$G$1000,4,0)
Case TESLA
Prohlaseni = WorksheetFunction.VlookUp(Reference,'D:\[BAZA.xlsx]DPT'!$D$5:$G$1000,4,0)
Case CRAVT
Prohlaseni = WorksheetFunction.VlookUp(Reference,'D:\[BAZA.xlsx]DPC'!$D$5:$G$1000,4,0)
End Select
End Function
Function Prohlaseni(Vyrobce As Variant, Reference As Variant) As Variant
Select Case Vyrobce
Case "GOI"
Prohlaseni = WorksheetFunction.VLookup(Reference, Workbooks("D:\BAZA.xlsx").Worksheets("DPG").Range("$D$5:$G$1000"), 4, 0)
Case "FINKLEY"
Prohlaseni = WorksheetFunction.VLookup(Reference, Workbooks("D:\BAZA.xlsx").Worksheets("DPF").Range("$D$5:$G$1000"), 4, 0)
Case "STEEL"
Prohlaseni = WorksheetFunction.VLookup(Reference, Workbooks("D:\BAZA.xlsx").Worksheets("DPS").Range("$D$5:$G$1000"), 4, 0)
Case "TESLA"
Prohlaseni = WorksheetFunction.VLookup(Reference, Workbooks("D:\BAZA.xlsx").Worksheets("DPT").Range("$D$5:$G$1000"), 4, 0)
Case "CRAVT"
Prohlaseni = WorksheetFunction.VLookup(Reference, Workbooks("D:\BAZA.xlsx").Worksheets("DPC").Range("$D$5:$G$1000"), 4, 0)
End Select
End Function
Спасибо компилятор успокоился, но VLookup ищет только в открытом файле BAZA.xlsx. При закрытом файле выдает ошибку. Т.е ищет если Workbooks("BAZA.xlsx") и файл открыт, выдает ошибку, если Workbooks("D:\BAZA.xlsx") и файл закрыт. А нужно, чтобы работало с закрытым файлом BAZA. Подскажите, пожалуйста, что нужно исправить, чтобы работало с закрытым файлом.
написал: что нужно исправить, чтобы работало с закрытым файлом
в таком виде - ничего не сделать. Раз работаете из VBA - открывайте нужный файл кодом, получайте данные и закрывайте. На всякий случай: Как получить данные из закрытой книги? Можете, конечно, ADO применить, но...Лучше открыть и закрыть, если файл не большой.