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

Вход

Регистрация

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

 

= Мир MS Excel/поиск по трем таблицам и перенос данных на другой лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск по трем таблицам и перенос данных на другой лист (Макросы/Sub)
поиск по трем таблицам и перенос данных на другой лист
andreikazah Дата: Суббота, 25.02.2017, 22:08 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
здравствуйте.
помогите сделать поиск.. есть похожая тема http://www.excelworld.ru/forum/2-432-1#211413, но там поиск по одной таблице, буду признателен за помощь..
в таблицах на листе Данные будет порядка 1500-2500 строк, а на листе Поиск в столбце К нужно указать из какой таблицы взяты данные.
К сообщению приложен файл: 7356869.xls (49.0 Kb)


Сообщение отредактировал andreikazah - Суббота, 25.02.2017, 22:12
 
Ответить
Сообщениездравствуйте.
помогите сделать поиск.. есть похожая тема http://www.excelworld.ru/forum/2-432-1#211413, но там поиск по одной таблице, буду признателен за помощь..
в таблицах на листе Данные будет порядка 1500-2500 строк, а на листе Поиск в столбце К нужно указать из какой таблицы взяты данные.

Автор - andreikazah
Дата добавления - 25.02.2017 в 22:08
Karataev Дата: Воскресенье, 26.02.2017, 00:36 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Обе процедуры поместите в один модуль. Запускайте только процедуру "Поиск". Процедура "Вспомогательная" будет запускаться процедурой "Поиск".
[vba]
Код
Sub Поиск()
    
    Dim shSrc As Worksheet, shRes As Worksheet
    Dim lr As Long
    
    Application.ScreenUpdating = False
    Set shSrc = Worksheets("данные")
    Set shRes = Worksheets("поиск")
    lr = shRes.UsedRange.Row + shRes.UsedRange.Rows.Count - 1
    If lr > 6 Then
        shRes.Rows("7:" & lr).Delete
    End If
    Вспомогательная shSrc, shSrc.Columns("A:J"), shRes, 1
    Вспомогательная shSrc, shSrc.Columns("L:U"), shRes, 2
    Вспомогательная shSrc, shSrc.Columns("W:AF"), shRes, 3
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Готово!", vbInformation

End Sub

Private Sub Вспомогательная(shSrc As Worksheet, rngSrc As Range, shRes As Worksheet, lngTableIndex As Long)
    
    Dim номер
    Dim arr(), lr As Long, i As Long
    
    lr = shSrc.Cells(shSrc.Rows.Count, rngSrc.Columns(4).Column).End(xlUp).Row
    If lr < 3 Then
        Exit Sub
    End If
    arr() = rngSrc.Columns(4).Rows(1).Resize(lr).Value
    номер = shRes.Range("C2").Value
    lr = shRes.UsedRange.Row + shRes.UsedRange.Rows.Count
    For i = 3 To UBound(arr)
        If arr(i, 1) = номер Then
            rngSrc.Rows(i).Copy
            shRes.Cells(lr, "A").PasteSpecial (xlPasteFormats)
            shRes.Cells(lr, "A").PasteSpecial (xlPasteValues)
            shRes.Cells(lr, "K").Value = lngTableIndex
            lr = lr + 1
        End If
    Next i

End Sub
[/vba]
 
Ответить
СообщениеОбе процедуры поместите в один модуль. Запускайте только процедуру "Поиск". Процедура "Вспомогательная" будет запускаться процедурой "Поиск".
[vba]
Код
Sub Поиск()
    
    Dim shSrc As Worksheet, shRes As Worksheet
    Dim lr As Long
    
    Application.ScreenUpdating = False
    Set shSrc = Worksheets("данные")
    Set shRes = Worksheets("поиск")
    lr = shRes.UsedRange.Row + shRes.UsedRange.Rows.Count - 1
    If lr > 6 Then
        shRes.Rows("7:" & lr).Delete
    End If
    Вспомогательная shSrc, shSrc.Columns("A:J"), shRes, 1
    Вспомогательная shSrc, shSrc.Columns("L:U"), shRes, 2
    Вспомогательная shSrc, shSrc.Columns("W:AF"), shRes, 3
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Готово!", vbInformation

End Sub

Private Sub Вспомогательная(shSrc As Worksheet, rngSrc As Range, shRes As Worksheet, lngTableIndex As Long)
    
    Dim номер
    Dim arr(), lr As Long, i As Long
    
    lr = shSrc.Cells(shSrc.Rows.Count, rngSrc.Columns(4).Column).End(xlUp).Row
    If lr < 3 Then
        Exit Sub
    End If
    arr() = rngSrc.Columns(4).Rows(1).Resize(lr).Value
    номер = shRes.Range("C2").Value
    lr = shRes.UsedRange.Row + shRes.UsedRange.Rows.Count
    For i = 3 To UBound(arr)
        If arr(i, 1) = номер Then
            rngSrc.Rows(i).Copy
            shRes.Cells(lr, "A").PasteSpecial (xlPasteFormats)
            shRes.Cells(lr, "A").PasteSpecial (xlPasteValues)
            shRes.Cells(lr, "K").Value = lngTableIndex
            lr = lr + 1
        End If
    Next i

End Sub
[/vba]

Автор - Karataev
Дата добавления - 26.02.2017 в 00:36
andreikazah Дата: Воскресенье, 26.02.2017, 14:36 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Большое спасибо...то что надо, сейчас адаптирую к оригиналу и в бой..ещё раз РАХМЕТ (спасибо). hands
 
Ответить
СообщениеБольшое спасибо...то что надо, сейчас адаптирую к оригиналу и в бой..ещё раз РАХМЕТ (спасибо). hands

Автор - andreikazah
Дата добавления - 26.02.2017 в 14:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск по трем таблицам и перенос данных на другой лист (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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