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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2011, 10:30   #41
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Вот такой эксперементальный вариант UDF VLOOKUPCOUPLE() - если не указан разделитель, то значения переносятся по строкам.
Работает, только формат ячейки мне пришлось поставить "Wrap Text", т.е. "перенос по словам" если не ошибаюсь.
На листе (в моём примере) выглядит как
=VLOOKUPCOUPLE4(D263:E264;1;H263;2)

Код:
Function VLOOKUPCOUPLE4(Table As Variant, SearchColumnNum As Integer, SearchValue As Variant, _
                        RezultColumnNum As Integer, Optional Separator_ As String = "NewLine")
'Table - таблица, где ищем
'SearchColumnNum - столбец, где ищем
'SearchValue - данные, которые ищем
'RezultColumnNum - колонка, откуда берём результат
'Separator_ - разделитель, желательно вводить с пробелом в конце

    Dim i As Long
    Select Case TypeName(Table)
    Case "Range"
        For i = 1 To Table.Rows.Count
            If Table.Cells(i, SearchColumnNum) = SearchValue Then
                If VLOOKUPCOUPLE4 <> "" Then
                    If Separator_ <> "NewLine" Then
                        VLOOKUPCOUPLE4 = VLOOKUPCOUPLE4 & Separator_ & Table.Cells(i, RezultColumnNum)
                    Else
                        VLOOKUPCOUPLE4 = VLOOKUPCOUPLE4 & Chr(10) & Table.Cells(i, RezultColumnNum)
                    End If
                Else
                    VLOOKUPCOUPLE4 = Table.Cells(i, RezultColumnNum)
                End If
            End If
        Next i
    Case "Variant()"
        For i = 1 To UBound(Table)
            If Table(i, SearchColumnNum) = SearchValue Then
                If VLOOKUPCOUPLE4 <> "" Then
                    If Separator_ <> "NewLine" Then
                        VLOOKUPCOUPLE4 = VLOOKUPCOUPLE4 & Separator_ & Table.Cells(i, RezultColumnNum)
                    Else
                        VLOOKUPCOUPLE4 = VLOOKUPCOUPLE4 & Chr(10) & Table.Cells(i, RezultColumnNum)
                    End If
                Else
                    VLOOKUPCOUPLE4 = Table(i, RezultColumnNum)
                End If
            End If
        Next i
    End Select
    If VLOOKUPCOUPLE4 = 0 Then VLOOKUPCOUPLE4 = ""
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 20.09.2011 в 10:32.
Hugo121 вне форума Ответить с цитированием
Старый 20.09.2011, 11:19   #42
сантехник
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 27
По умолчанию

сколько текста..
в любом случае спасибо, буду ковырять)

зы. как получить справку по коду? тут все пишут без коментариев.
сантехник вне форума Ответить с цитированием
Старый 20.09.2011, 11:27   #43
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Текста много потому, что она такая уже была
И потому, что рассчитано на работу с открытой и закрытой книгой - Select Case TypeName(Table)
А справки не будет. Да и какая справка - тут только Select Case, If Then да For Next...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование представления числовых данных stas135642 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.05.2011 20:49
Приведение матрицы к диагональному виду Смородинка Помощь студентам 1 01.10.2010 16:24
Простая с виду задача, но.. RomT24 Паскаль, Turbo Pascal, PascalABC.NET 1 11.05.2009 23:55
Программа по подготовке к единому государственному экзамену в России ЕГЭ 2009 mihali4 Свободное общение 1 18.03.2009 21:33
Приведение задачи к каноническому виду feniks65 Паскаль, Turbo Pascal, PascalABC.NET 2 26.12.2008 22:53