Хээлп!!!! Как использовать свой массив в стат. функциях???

Программирование на Visual Basic for Applications
romantimo
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 26.09.2006 (Вт) 14:01

Хээлп!!!! Как использовать свой массив в стат. функциях???

Сообщение romantimo » 26.09.2006 (Вт) 14:09

Помогите плиз!!!!

есть функция типа:
Application.WorksheetFunction.Median(1, 2, 3....)

Как мне вместо стандартных аргументов подставить массив???
У меня не получается....


Тем более, что на независимые аргументы есть ограничение 30 шт.

Не знаю что и делать... может быть преобразовать Array в Range???

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 26.09.2006 (Вт) 14:24

тут было ошибочное решение проблемы
Последний раз редактировалось Viper 26.09.2006 (Вт) 14:36, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.09.2006 (Вт) 14:25

Вообще-то он вызывает функции листа...
romantimo, попробоуй использовать Array(1,2,3).
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 26.09.2006 (Вт) 14:33

Упс.... обшибся :oops:
Весь мир матрица, а мы в нем потоки байтов!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.09.2006 (Вт) 14:33

У меня след. код работает корректно:

Код: Выделить всё
Sub test()
    MsgBox Application.Median(Array(1, 2, 3, 8))
   
    MsgBox Application.WorksheetFunction.Median(Array(1, 2, 3, 8))
   
    ' горизонталь
    [A1:D1] = Array(1, 2, 3, 8)
    MsgBox Application.Median([A1:D1])
   
    x = [A1:D1].Value
    MsgBox Application.Median(x)
   
    ' вертикаль
    [A1:A4] = Application.Transpose(Array(1, 2, 3, 8))
    MsgBox Application.Median([A1:A4])
   

    x = [A1:A4].Value
    MsgBox Application.Median(x)

End Sub


Может покажешь как ты пытаешься это делать?
Привет,
KL

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 26.09.2006 (Вт) 14:44

да и просто с массивами работает..

Код: Выделить всё
Dim arr(3) As Integer
   
    arr(0) = 2
    arr(1) = 2
    arr(2) = 3
   
    msgbox Application.WorksheetFunction.Median(arr)


непонятны трудности...
подписи нет и не будет

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.09.2006 (Вт) 18:35

[quote="inq"]да и просто с массивами работает..[quote]

Ну вот и я о том же (переменная x это массив полученный из ранга [A1:A4]):


Код: Выделить всё
    x = [A1:A4].Value
    MsgBox Application.Median(x)

End Sub
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.09.2006 (Вт) 22:08

Для полноты - еще 4 варианта работы с массивами в Excel:

Код: Выделить всё
Sub test()

    MsgBox Application.Median([{1,2,3,8}])
   
    MsgBox Application.Median(Evaluate("{1,2,3,8}"))
   
    MsgBox [Median({1,2,3},8)]
   
    MsgBox Evaluate("Median({1,2,3},8)")
   
End Sub
Привет,
KL

romantimo
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 26.09.2006 (Вт) 14:01

Сообщение romantimo » 27.09.2006 (Ср) 6:20

Спасибо всем, кто участвовал

Я собственно хотел сделать следующее:

Dim A(100), s As Double
A(0) = 1
A(1) = 55
A(2) = 2
s = Application.WorksheetFunction.Median(A)
MsgBox (s)


Все работает! :?: это странно!

Я просидел все воскресенье над этой проблемой.
Пока не понял в чем был трабл...
Но всем спасибо :)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 110

    TopList