Задача: установить в столбец A отфильтрованный по столбцу B значения из таблицы. Перебрал много разной информации на данную тему, и кое-что нашел. Задача частично решена, подробности в файле. Таблица содержит не более 5-6тас. записей.
Задача: установить в столбец A отфильтрованный по столбцу B значения из таблицы. Перебрал много разной информации на данную тему, и кое-что нашел. Задача частично решена, подробности в файле. Таблица содержит не более 5-6тас. записей.San40
Спасибо! попробовал вставить в ячейку A2 и протянуть по диапозону выдала в яейке A2 =Болт, в ячейке A3 =Гайка, далее #ЗНАЧ!. Если это важно у меня EXCEL 2003, но не принципиально если можно решить в других версиях.
Спасибо! попробовал вставить в ячейку A2 и протянуть по диапозону выдала в яейке A2 =Болт, в ячейке A3 =Гайка, далее #ЗНАЧ!. Если это важно у меня EXCEL 2003, но не принципиально если можно решить в других версиях.San40
Прошу прощения Boroda_, я в свой файл вставлял не посмотрев Ваше вложение. Вроде все работает, буду тестировать на больших файлах. СПАСИБО! И всетаки обратите внимание на макрос Filter2, по моему интересное решение
Прошу прощения Boroda_, я в свой файл вставлял не посмотрев Ваше вложение. Вроде все работает, буду тестировать на больших файлах. СПАСИБО! И всетаки обратите внимание на макрос Filter2, по моему интересное решениеSan40
Sub ertert() Dim x, i&, r As Range, adr As String Application.ScreenUpdating = False x = Range("J1").CurrentRegion With Range("A1:G" & Cells(Rows.Count, 2).End(xlUp).Row) .Columns(1).Offset(1).ClearContents For i = 2 To UBound(x) Set r = .Columns(2).Find(x(i, 1), lookat:=xlPart) If Not r Is Nothing Then adr = r.Address Do Cells(r.Row, 1) = x(i, 2) Set r = .Columns(2).FindNext(r) Loop While r.Address <> adr End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
или без фильтра (см. лист Данные) [vba]
Код
Sub ertert() Dim x, i&, r As Range, adr As String Application.ScreenUpdating = False x = Range("J1").CurrentRegion With Range("A1:G" & Cells(Rows.Count, 2).End(xlUp).Row) .Columns(1).Offset(1).ClearContents For i = 2 To UBound(x) Set r = .Columns(2).Find(x(i, 1), lookat:=xlPart) If Not r Is Nothing Then adr = r.Address Do Cells(r.Row, 1) = x(i, 2) Set r = .Columns(2).FindNext(r) Loop While r.Address <> adr End If Next i End With Application.ScreenUpdating = True End Sub
Интересный момент по поводу Find: до этого рисовал макрос в другом файле с .Find(x(i, 1), lookat:=xlWhole). Потом открыл файл ТС и написал .Find(x(i, 1)) (т.к. xlPart по умолчанию). Запустил макрос, и Find сработал с параметром xlWhole (поэтому пришлось явно указывать xlPart). т.е., видимо, ранее использованные параметры Find хранятся где-то на уровне приложения (!). Удивительно...
Интересный момент по поводу Find: до этого рисовал макрос в другом файле с .Find(x(i, 1), lookat:=xlWhole). Потом открыл файл ТС и написал .Find(x(i, 1)) (т.к. xlPart по умолчанию). Запустил макрос, и Find сработал с параметром xlWhole (поэтому пришлось явно указывать xlPart). т.е., видимо, ранее использованные параметры Find хранятся где-то на уровне приложения (!). Удивительно...nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Среда, 05.02.2014, 11:50
Ну да, в текущей сессии установки "Поиска и замены" сохраняются до закрытия приложения, а .Find использует неуказанные значения параметров оттуда
Ну да, в текущей сессии установки "Поиска и замены" сохраняются до закрытия приложения, а .Find использует неуказанные значения параметров оттуда AndreTM