Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2009, 10:07   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию поправить функцию

Помогите поправить функцию в заданном примере.

Для функции отрабатывает Модуль 11.
Вложения
Тип файла: rar движки в заполнитель.rar (58.1 Кб, 11 просмотров)
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 11.12.2009, 10:35   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Функция у Вас правильная, а вот диапазон задан неверно. В ячейке "L275" вместо формулы
Код:
=ЕСЛИ(ЕПУСТО(A275);"";InRow(B275:B280))
должна быть формула
Код:
=ЕСЛИ(ЕПУСТО(A275);"";InRow(B275:B276))
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 11.12.2009, 11:00   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Дело в том, что мне надо, что бы функция сама определяла сколько номеров перенести в строчку.
т.е. брать номера движков из столбца до тех пор, пока не появиться новый номер ящика и т.д.
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 11.12.2009, 11:55   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно использовать такую функцию:
Код:
Function InRow(N As Range) As String
    Dim x As New Collection, s As String, Cell As Range
    If IsEmpty(N) Then Exit Function
    For Each Cell In Range(N.Next, Cells(N.End(xlDown).Row - 1, N.Next.Column))
        If Cell.EntireRow.Hidden = False Then
            On Error Resume Next
            x.Add Cell.Value, CStr(Cell.Value)
            If Err = 0 Then s = s & ", " & Cell Else On Error GoTo 0
        End If
    Next
    If s <> "" Then InRow = Right(s, Len(s) - 2)
End Function
где в качестве аргумента N нужно задавать адрес ячейки с номером упаковочного места, при условии, что все его VIN находятся в соседнем правом столбце. Теперь достаточно, например, в ячейку "L275" вместо Вашей формулы поместить формулу
Код:
=InRow(A275)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 11.12.2009 в 11:58.
SAS888 вне форума Ответить с цитированием
Старый 11.12.2009, 12:16   #5
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

спасибо! все получилось!
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 11.12.2009, 12:46   #6
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

альтернативный вариант макросом, имя макроса: collitem
Вложения
Тип файла: zip движки в заполнитель.zip (75.2 Кб, 12 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 27.03.2010, 08:05   #7
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Спасибо всем!
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите поправить макрос tem1112 Microsoft Office Excel 7 06.11.2009 21:25
Одномерные массивы на C. Поправить код. STS_1991 Помощь студентам 2 05.03.2009 16:59
Помогите поправить программу! Массивы в С++ progser_ua Помощь студентам 1 03.02.2009 14:07
Помогите поправить код SANTA_KLAUD Общие вопросы Delphi 5 30.05.2008 09:01
помогите поправить! koyot Работа с сетью в Delphi 4 13.02.2008 18:46