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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 19:25   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Не работает ВПР3 (VLOOKUP3)

Добрый день, уважаемые форумчане!
Не хочет работать формула массива VLOOKUP3 именно с этим значением Rado (пример во вложении, таблица на первом листе, формула на втором). Само значение скопировал из рабочего файла, таблица практически аналогичная. С другими значениями в этой же таблице работает нормально. Пробовал разные варианты с форматами, очищал, удалял, вводил вручную. Автопересчет включен. Что не так, подскажите? Заранее спасибо.
Вложения
Тип файла: rar Книга1.rar (98.5 Кб, 23 просмотров)
strannick вне форума Ответить с цитированием
Старый 12.05.2012, 22:08   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Попробуйте увеличить размер выходного массива, типа
Dim Out(10000) As Variant
nilem вне форума Ответить с цитированием
Старый 12.05.2012, 22:23   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Лучше вероятно даже так:
Код:
ReDim Out(0 To Table.Rows.Count - 1) As Variant
P.S.
А ещё лучше так - в 5 раз быстрее на этом примере, плюс ещё пару недочётов исправил:

Код:
Function VLOOKUP3(Table As Range, SearchColumnNum As Integer, _
                  SearchValue As Variant, ResultColumnNum As Integer)
'улучшенная функция ВПР вводится как формула массива
'ищет указанной значение в указанном столбце и выводит все соответствия из указанного столбца
    Dim i&, j&
    Dim a
    ReDim Out(1 To Table.Rows.Count, 1 To 1) As Variant

    a = Table.Value
    For i = 1 To Table.Rows.Count
        If a(i, SearchColumnNum) = SearchValue Then
            j = j + 1
            Out(j, 1) = a(i, ResultColumnNum)
        End If
    Next i
    VLOOKUP3 = Out
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 12.05.2012 в 22:37.
Hugo121 вне форума Ответить с цитированием
Старый 13.05.2012, 09:13   #4
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Попробуйте увеличить размер выходного массива, типа
Dim Out(10000) As Variant
Точно! Это я не досмотрел.
strannick вне форума Ответить с цитированием
Старый 13.05.2012, 09:14   #5
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Лучше вероятно даже так:
Код:
ReDim Out(0 To Table.Rows.Count - 1) As Variant
P.S.
А ещё лучше так - в 5 раз быстрее на этом примере, плюс ещё пару недочётов исправил:

Код:
Function VLOOKUP3(Table As Range, SearchColumnNum As Integer, _
                  SearchValue As Variant, ResultColumnNum As Integer)
'улучшенная функция ВПР вводится как формула массива
'ищет указанной значение в указанном столбце и выводит все соответствия из указанного столбца
    Dim i&, j&
    Dim a
    ReDim Out(1 To Table.Rows.Count, 1 To 1) As Variant

    a = Table.Value
    For i = 1 To Table.Rows.Count
        If a(i, SearchColumnNum) = SearchValue Then
            j = j + 1
            Out(j, 1) = a(i, ResultColumnNum)
        End If
    Next i
    VLOOKUP3 = Out
End Function
Определенно быстрее! Огромное спасибо!
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает relese версия проги и debug работает тока на моем компе D][mon C# (си шарп) 2 04.05.2012 20:21
Программа работает в WinXP и не работает в Win7 blblbl-org Общие вопросы Delphi 4 23.04.2012 19:50
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04