Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/поиск строки по двум значениям - Страница 2 - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 2 из 2«12
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск строки по двум значениям (Макросы/Sub)
поиск строки по двум значениям
StoTisteg Дата: Воскресенье, 21.02.2016, 16:08 | Сообщение № 21
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
А лучше всего сначала перенести, потом фильтровать:
[vba]
Код

    Dim list As String
    Dim col, rws, i As Integer

    list = ActiveSheet.Name
    Sheets.Add After:=Sheets(Sheets.Count)
    Worksheets(list).Cells.Copy Destination:=ActiveSheet.Cells
    col = ActiveSheet.UsedRange.Columns.Count
    rws = ActiveSheet.UsedRange.Rows.Count
    Cells(1, 4).Copy Destination:=Cells(1, col + 2)
    Cells(2, col + 2).Value = numer
    Cells(1, 23).Copy Destination:=Cells(1, col + 3)
    Cells(2, col + 3).Value = podr
    Range(Cells(1, 1), Cells(rws, col)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(Cells(1, col + 2), Cells(2, col + 3)), CopyToRange:=Cells(1, col + 5), Unique:=False
    For i = 1 To col + 4
        Columns(1).Delete
    Next i
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеА лучше всего сначала перенести, потом фильтровать:
[vba]
Код

    Dim list As String
    Dim col, rws, i As Integer

    list = ActiveSheet.Name
    Sheets.Add After:=Sheets(Sheets.Count)
    Worksheets(list).Cells.Copy Destination:=ActiveSheet.Cells
    col = ActiveSheet.UsedRange.Columns.Count
    rws = ActiveSheet.UsedRange.Rows.Count
    Cells(1, 4).Copy Destination:=Cells(1, col + 2)
    Cells(2, col + 2).Value = numer
    Cells(1, 23).Copy Destination:=Cells(1, col + 3)
    Cells(2, col + 3).Value = podr
    Range(Cells(1, 1), Cells(rws, col)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(Cells(1, col + 2), Cells(2, col + 3)), CopyToRange:=Cells(1, col + 5), Unique:=False
    For i = 1 To col + 4
        Columns(1).Delete
    Next i
[/vba]

Автор - StoTisteg
Дата добавления - 21.02.2016 в 16:08
Sashagor1982 Дата: Воскресенье, 21.02.2016, 17:30 | Сообщение № 22
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 160
Репутация: 12 ±
Замечаний: 0% ±

Excel 2007
Извиняюсь так как не могу прилагать примеры на выходе нужен номер строки в которой значения в столбцах соответствуют заданным. Фильтр и циклы желательно не использовать.
 
Ответить
СообщениеИзвиняюсь так как не могу прилагать примеры на выходе нужен номер строки в которой значения в столбцах соответствуют заданным. Фильтр и циклы желательно не использовать.

Автор - Sashagor1982
Дата добавления - 21.02.2016 в 17:30
Апострофф Дата: Воскресенье, 21.02.2016, 18:02 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
[offtop]Пример не дам, Фильтр и циклы не использовать.
Банальным маразмом отдает (иди туда, не знаю куда и т.д.).
Удивляюсь тому, что кто-то ещё пытается помочь...[/offtop]
 
Ответить
Сообщение[offtop]Пример не дам, Фильтр и циклы не использовать.
Банальным маразмом отдает (иди туда, не знаю куда и т.д.).
Удивляюсь тому, что кто-то ещё пытается помочь...[/offtop]

Автор - Апострофф
Дата добавления - 21.02.2016 в 18:02
Manyasha Дата: Воскресенье, 21.02.2016, 18:10 | Сообщение № 24
Группа: Модераторы
Ранг: Старожил
Сообщений: 1587
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Sashagor1982, а мой код чем не подошел? Или Вы увидели в нем цикл и даже пробовать не стали?
нужен номер строки

я так поняла всю строку запомнить надо. Для возврата только номера сроки замените строчку [vba]
Код
arr(k) = Intersect(.Rows(i), .UsedRange).Value: k = k + 1
[/vba]на [vba]
Код
arr(k) = i: k = k + 1
[/vba]

Выдает ошибку 1004
не могу прилагать примеры
тогда ошибки Вам самостоятельно придется исправлять


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеSashagor1982, а мой код чем не подошел? Или Вы увидели в нем цикл и даже пробовать не стали?
нужен номер строки

я так поняла всю строку запомнить надо. Для возврата только номера сроки замените строчку [vba]
Код
arr(k) = Intersect(.Rows(i), .UsedRange).Value: k = k + 1
[/vba]на [vba]
Код
arr(k) = i: k = k + 1
[/vba]

Выдает ошибку 1004
не могу прилагать примеры
тогда ошибки Вам самостоятельно придется исправлять

Автор - Manyasha
Дата добавления - 21.02.2016 в 18:10
Sashagor1982 Дата: Воскресенье, 21.02.2016, 18:39 | Сообщение № 25
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 160
Репутация: 12 ±
Замечаний: 0% ±

Excel 2007
Manyasha, спасибо. В программе для которой ищу решение применен цикл, но ищу альтернативу.. Апострофф, не могу примеры с телефона слать, извини.
 
Ответить
СообщениеManyasha, спасибо. В программе для которой ищу решение применен цикл, но ищу альтернативу.. Апострофф, не могу примеры с телефона слать, извини.

Автор - Sashagor1982
Дата добавления - 21.02.2016 в 18:39
StoTisteg Дата: Воскресенье, 21.02.2016, 19:45 | Сообщение № 26
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Sashagor1982, Вы порой кидаете такие задачки, что теряешься в догадках, какова их конечная цель :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеSashagor1982, Вы порой кидаете такие задачки, что теряешься в догадках, какова их конечная цель :)

Автор - StoTisteg
Дата добавления - 21.02.2016 в 19:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск строки по двум значениям (Макросы/Sub)
Страница 2 из 2«12
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!