Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/65: Рейтинг темы: голосов - 65, средняя оценка - 4.78
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
1

Передача диапазона ячеек в функцию

02.03.2016, 14:34. Показов 12040. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Потребовалось написать пользовательскую функцию в Excel, функция должна принимать диапазон ячеек:
=PLACE(A2:I2,A2)
Функция PLACE принимает массив:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function Place(arr() As Integer, number As Integer)
for i=1 to UBound(arr)
for j=1 to (UBound(arr)-1)
if arr(j)<arr(j+1) then
c=arr(j)
arr(j)=arr(j+1)
arr(j+1)=c
endif
next j
next i
if number=arr(1) then
Place=1
endif
p=1
for i=2 to UBound(arr)
if arr(i)=arr(i-1) then
if number=arr(i) then
Place=p
Endif
Else
p=p+1
if number=arr(i) then
Place=p
Endif
endif
next i
End Function
LibreOffice при вычислении ячейки дает ошибку 501
Как правильно описать функцию, чтобы она могла принять в качестве параметра диапазон ячеек?
Может не массив нужно, а список или массив другой какой-нибудь...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2016, 14:34
Ответы с готовыми решениями:

Передача диапазона ячеек в формулу макроса
Хочу в макросе в выбранную ячейку вставить двойную формулу &quot;=СТАНДОТКЛОН(диапазон) /...

Как выполнить функцию или метод replace для диапазона ячеек
Вроде так работает Cells(1, 2).Value = Replace(Cells(1, 2).Value, &quot;яяяяя&quot;, &quot;&quot;) но тогда придётся...

Составьте функцию, которая проверяет в каждой строке диапазона наличие элементов, больших половины максимума всех элементов диапазона
11.Составьте функцию, которая проверяет в каждой строке диапазона наличие элементов, больших...

Значения ячеек из диапазона
Привет всем! Парни нужна помощь... Нужно в экселе с помощью стандартных функций сделать следующее:...

5
3917 / 2315 / 784
Регистрация: 02.11.2012
Сообщений: 6,158
02.03.2016, 14:56 2
Лучший ответ Сообщение было отмечено nrv как решение

Решение

Visual Basic
1
Function Place(диапазон As Range, number As Integer)
ваш код придется править
1
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
02.03.2016, 15:02  [ТС] 3
Почему-то не работает
0
3917 / 2315 / 784
Регистрация: 02.11.2012
Сообщений: 6,158
02.03.2016, 15:07 4
Цитата Сообщение от nrv Посмотреть сообщение
Почему-то не работает
откуда такие выводы? диапазон в функцию передается, а вот обрабатывается ли это другой вопрос.
например
Visual Basic
1
2
Function Place(диапазон As Range, number As Integer)
arr=диапазон.value
в окне Locals смотрим чему равно arr.

опишите словами что ваша функция должна делать.
0
Заблокирован
02.03.2016, 15:11 5
Цитата Сообщение от nrv Посмотреть сообщение
пользовательскую функцию в Excel
Цитата Сообщение от nrv Посмотреть сообщение
LibreOffice при вычислении ячейки дает ошибку 501
Может в этом проблема? Определитесь, с чем работаете.
0
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
02.03.2016, 15:53  [ТС] 6
Сделаем функцию-заглушку, внутри которой точно нет проблемы:
PureBasic
1
2
3
Function Foo(range As Range, number As Integer)
Foo=number
End Function
Она тоже не работает, ошибка 501. Слово "диапазон" это случайно не есть ключевое слово? Проверить я не смог, если вместо range написать диапазон, ругается, но это все-таки на кириллицу наверное.

Добавлено через 14 минут
Ошибка 501, оказывается - это просто LibreOffice не видел функцию Foo (в случае с функцией Place по-прежнему 501, хотя теперь он ее должен видеть), теперь ошибка в Basic IDE "переменная типа object не установлена"

Добавлено через 10 минут
Упс, "object не задан" - это я при вызове функции 1 параметр вместо 2 указал, так что изначально все правильно написал - функция Foo дает ошибку 501

Добавлено через 8 минут
Спасибо, Range все-таки работает, просто параметры нужно писать через точку в запятой
0
02.03.2016, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2016, 15:53
Помогаю со студенческими работами здесь

Запись диапазона ячеек
Здравствуйте! На одном из этапов выполнения макроса мне нужно создать именованный диапазон,...

Копирование диапазона ячеек
Уважаемые форумчане, подскажите, пожалуйста. Хочу скопировать диапазон ячеек с одного листа на...

Выбор диапазона ячеек
Что-то совсем все подзабыл... в общем есть отчет для подсчета стажа сотрудников, который в свою...

Выделение диапазона ячеек
Всем доброго дня. Имеется кодintersect(activesheet.usedrange,range(&quot;A:D&quot;)).Select который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru