Страницы: 1
RSS
формула массива в VBA, расчёт значения без использования ячейки листа
 
добрый день!

у меня есть формула массива. Ценна тем, что работает с закрытой книгой.
результатом расчёта является число (не массив)

мне нужно использовать значение этой формулы в макросе. есть вот такая строка:
Код
Range("A30").FormulaArray =  "=INDEX([базы.xls]субьекты!R1C1:R214C2," & Chr(10) & "MAX(([базы.xls]субьекты!R2C4:R86C32=VALUE(LEFT(R[-1]C,3)))*ROW(R2C4:R86C32)),2)"

можно ли как-то обойтись без внесения значения в ячейку, а сразу присвоить его переменной?
что-то вроде:
Код
результат.FormulaArray = "=INDEX([базы.xls]субьекты!R1C1:R214C2," & Chr(10) & "MAX(([базы.xls]субьекты!R2C4:R86C32=VALUE(LEFT(R[-1]C,3)))*ROW(R2C4:R86C32)),2)"
Изменено: Максим - 20.06.2019 19:00:27
 
Зачем для работы макросов использовать формулы листа? Раз уж Вы перешли на этот уровень (макросы), то и считайте все в коде, средствами VBA, а на лист выгружайте готовые значения
А по вопросу - читаем про WorksheetFunction  
Согласие есть продукт при полном непротивлении сторон
 
кодом VBA  работать с закрытой книгой (без её открытия) очень заморочено

формула массива прекрасно работает с закрытой книгой.

единственная проблема - я умею её считать только внутри ячейки
 
Формула массива после перевода ее в VBA гораздо более заморочена.
Цитата
Максим написал:
я умею её считать только внутри ячейки
Вставляйте ее в ячейку, как умеете, считывайте из ячейки значение в переменную и удаляйте формулу из ячейки
Это менее заморочено...видимо
Согласие есть продукт при полном непротивлении сторон
 
мой вопрос был в том как присвоить значение переменной без участия ячейки?

Вы отвечаете - "делайте так, как делаете"
 
Цитата
Sanja написал:
А по вопросу - читаем про WorksheetFunction  
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Максим написал:
кодом VBA  работать с закрытой книгой (без её открытия)
А что мешает открыть книгу?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
А что мешает открыть книгу?
возможное существование способа обойтись без её открытия
 
А причина в чем, книгу не открывать? Непонятно, чем это мешает?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Максим написал:
возможное существование способа обойтись без её открытия
Решение через формулы листа по моему более извращенный способ, нежели открытие книги.
"Все гениальное просто, а все простое гениально!!!"
 
при всём огромном уважении ко всем кто отвечает -
я не прошу Вас сейчас помогать мне решать прикладную задачу, предлагать оптимальные алгоритмы её решений и убеждать меня в том что я делаю что-то не рационально и не оптимально.
я прошу Вас ответить ровно на тот вопрос который я задал.
 
Если бы был положительный ответ, вам давно бы уже ответили. Но похоже ваша задача не решается так как вы хотите. В сообщении №2 вас направили , но наверно  вам там не интересно читать. обычно, если есть решение, то его сразу выкладывают, для меня допустим не понятно как можно присвоить значение формулы массива переменной, скорее всего переменная будет определена как текстовая и на выходе вы получите не тот результат , который хотите
Изменено: Nordheim - 20.06.2019 19:53:48
"Все гениальное просто, а все простое гениально!!!"
 
я читаю. пытаюсь разобраться. просто вроде как не отвечать на Ваши вопросы - некрасиво. а отвечаю - считаете что я сижу ничего не делаю и только f5 жму. я уже решил проблему (временно). формула рассчитывается в другом файле и результат извлекается из ячейки (их закрытого файла) с помощью ExecuteExcel4Macro.

по WorksheetFunction - я не смог разобраться как переписать мою формулу функциями vba. не хватает мне ума.

я возможно (абсолютно точно) иду к решению многих задач очень не рационально. но я дохожу до решения, получая рабочий инструмент который экономит много времени. мне практически безразлично то, что он затрачивает в 1млн раз больше ресурсов и время выполнения занимает не одну наносекунду, а одну секунду. главное что работает и удовлетворяет МОИМ потребностям а не потребностям тех кто будет смотреть как написан код и сокрушённо взмахивать руками.

при этом я крайне благодарен этому форуму. без него ничего бы небыло. но блин - очень раздражают уточняющие вопросы которые предлагают не решение проблемы, а сомневаются в наличии вопроса.
Изменено: Максим - 20.06.2019 20:02:01
 
Цитата
Nordheim написал:
скорее всего переменная будет определена как текстовая и на выходе вы получите не тот результат , который хотите
результат этой формулы массива в ячейке - число. двузначное число.
 
Цитата
Максим написал: но блин - очень раздражают уточняющие вопросы
Ну это естественная реакция, ведь помогающие именно для того, что бы Вас пораздражать, и задают уточняющие вопросы. От нечего делать
По вопросу. Записать формулу массива с листа в код VBA напрямую, именно как формулу, не получится.
Изменено: Sanja - 20.06.2019 20:51:54
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Максим написал:
блин - очень раздражают уточняющие вопросы которые предлагают не решение проблемы
Максим, Вы уж поверьте - уточняющие вопросы потенциальные помощники задают не из вредности.
 
я Вас понял, спасибо!

последний ответ Sanja чётко и понятно
Цитата
Sanja написал: Записать формулу массива с листа в код VBA напрямую, именно как формулу, не получится.
это и есть ответ на мой вопрос.
если я буду пытаться сделать это по-другому (через открытие книги например) и у меня не будет это получаться и я не найду ответа на форме, то я создам новую тему с тем вопросом который у меня возникнет.

спасибо!
 
Цитата
Максим написал:
можно ли как-то обойтись без внесения значения в ячейку, а сразу присвоить его переменной?
В принципе можно было бы без уточнения написать простой ответ на ваш вопрос "Нет нельзя" и тему можно было бы закрывать, но есть другие люди которые возможно пытаются решить вашим способом проблему, а тут увидят альтернативный вариант, который и возьмут на вооружение. и будут применять. А после ответа "Нет", тема будет "ни о чем", но зато с конкретикой. Ник запомню, и больше не буду докучать вопросами, дико извиняюсь, что задавал их.
Изменено: Nordheim - 20.06.2019 22:20:48
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Наверх