Страницы: 1
RSS
VBA формула массива
 
Подскажите, пожалуйста!  
 
Возникла проблема. Хочу присвоить ячейке формулу массива    
 
Range("G5").FormulaArray = "=sum(if(H5>$B$4:$B$6;1;(H5/$B$4:$B$6)^$C$4:$C$6)*$A$4:$A$6)"  
 
Выдает ошибку, что не может ячейке присвоить формулу массива. Как решить эту проблему?
 
H5>$B$4:$B$6 это вы себе как представляете?    
$B$4:$B$6<H5  
И скобки забыли:  
(H5/$B$4:$B$6)^($C$4:$C$6))*($A$4:$A$6))
Кому решение нужно - тот пример и рисует.
 
К сожалению, та же самая ошибка
 
Пока не увижу - не поверю :О)
Кому решение нужно - тот пример и рисует.
 
Файл прикреплен
 
gelfer, ваш пример вообще левый. Там нет кода, который написан вами в 1-м посте  
 
Запомните, что если вы пишите формулу ПО-АНГЛИЙСКИ (SUM, IF, COUNT), то разделителем является ЗАПЯТАЯ  
 
А если вы формулы пишите ПО-РУССКИ (СУММ, ЕСЛИ, СЧЁТ), то разделителем является ТОЧКА С ЗАПЯТОЙ  
 
Range("G5").FormulaArray = "=sum(if(H5>$B$4:$B$6,1,(H5/$B$4:$B$6)^$C$4:$C$6)*$A$4:$A$6)"  
 
 
p.s. постарайтесь, больше левых примеров не выкладывать. Левые - это когда вы спрашиваете про одну формулу (код), а в приложенном файле у вас другая формула и код
 
Прошу извинений за допущенную ошибку (про языки), но, к сожалению, разделительные знаки не влияют на работу макроса.
 
в вашей русской формулой в макросе я ещё не разбирался, а по поводу вашей английской формулы из первого поста - не уже ли моя формула  
 
Range("G5").FormulaArray = "=sum(if(H5>$B$4:$B$6,1,(H5/$B$4:$B$6)^$C$4:$C$6)*$A$4:$A$6)"  
 
выдаёт у вас ошибку в коде? У меня она срабатывает и в ячейку G5 вставляется формула массива. Вы пробовали её вставить в свой код? Или всё же вам нужна формула не из вашего первого поста, а которая написана в коде макроса?
 
Перевёл вашу русскую формулу на английский    
 
 
Range("G5").FormulaArray = "=SUM(IF($B$4:$B$6<H5,1,(H5/($B$4:$B$6))^($C$4:$C$6))*($A$4:$A$6))"  
 
Работает? У меня да.
 
Интересна русская версия  
Range("G5").FormulaArray = "=сумм(если($B$4:$B$6<H5;1;(H5/($B$4:$B$6))^($C$4:$C$6))*($A$4:$A$6))"  
 
К сожалению, не работает макрос. Выдает ошибку 1004. "Нельзя установить свойство Formulaarray класса Range."
 
Я же вам уже ответил в 17:13  
 
Пишите так  
 
Range("G5").FormulaArray = "=SUM(IF($B$4:$B$6<H5,1,(H5/($B$4:$B$6))^($C$4:$C$6))*($A$4:$A$6))"
 
в 17:09
 
Дед_мороз, я же говорю что при данном написании у меня не работает макрос  
Может быть мне что-то надо поменять в настройках экселя?
 
хм, странно всё это. Приложите ещё раз свой файлик (только удалите ненужные (пустые) модули оттуда, лишние макросы, формулу, коды и т.д.), а мы посмотрим.  
По-идее, ничего в Excel'e настраивать не надо.
 
Файл ниже
 
Файл прикреплен  
Имеет смысл смотреть последний файл
 
Вам хоть раз подсказали такой вариант? FormulaArray = "=сумм  
Всюду было FormulaArray = "=SUM
 
Sub Кнопка2_Щелчок()  
   Application.ScreenUpdating = False  
         
   Range("G5").FormulaArray = "=sum(if($B$4:$B$6<H5,1,(H5/($B$4:$B$6))^($C$4:$C$6))*($A$4:$A$6))"  
   Range("G5").GoalSeek Goal:=Range("F5"), ChangingCell:=Range("H5")  
   Range("G5") = Int(Range("H5"))  
   Range("H5") = ""  
     
   Application.ScreenUpdating = True  
 
End Sub
Страницы: 1
Читают тему
Наверх