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

Вход

Регистрация

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

 

= Мир MS Excel/Отфильтровать столбец B и установить значения в столбец A - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отфильтровать столбец B и установить значения в столбец A (Макросы Sub)
Отфильтровать столбец B и установить значения в столбец A
San40 Дата: Вторник, 04.02.2014, 23:04 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Задача: установить в столбец A отфильтрованный по столбцу B значения из таблицы.
Перебрал много разной информации на данную тему, и кое-что нашел.
Задача частично решена, подробности в файле.
Таблица содержит не более 5-6тас. записей.
К сообщению приложен файл: Filter_01.xls (72.5 Kb)
 
Ответить
СообщениеЗадача: установить в столбец A отфильтрованный по столбцу B значения из таблицы.
Перебрал много разной информации на данную тему, и кое-что нашел.
Задача частично решена, подробности в файле.
Таблица содержит не более 5-6тас. записей.

Автор - San40
Дата добавления - 04.02.2014 в 23:04
_Boroda_ Дата: Вторник, 04.02.2014, 23:19 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А не проще формулкой массива?
Код
=ИНДЕКС(M$1:M$3;СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСК(J$1:L$3;B2))*ЕТЕКСТ(J$1:L$3);СТРОКА(J$1:J$3))))

Она должна быть достаточно шустрой
К сообщению приложен файл: Filter_01_1.xls (91.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА не проще формулкой массива?
Код
=ИНДЕКС(M$1:M$3;СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСК(J$1:L$3;B2))*ЕТЕКСТ(J$1:L$3);СТРОКА(J$1:J$3))))

Она должна быть достаточно шустрой

Автор - _Boroda_
Дата добавления - 04.02.2014 в 23:19
San40 Дата: Вторник, 04.02.2014, 23:34 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо! попробовал вставить в ячейку A2 и протянуть по диапозону выдала в яейке A2 =Болт, в ячейке A3 =Гайка, далее #ЗНАЧ!.
Если это важно у меня EXCEL 2003, но не принципиально если можно решить в других версиях.
 
Ответить
СообщениеСпасибо! попробовал вставить в ячейку A2 и протянуть по диапозону выдала в яейке A2 =Болт, в ячейке A3 =Гайка, далее #ЗНАЧ!.
Если это важно у меня EXCEL 2003, но не принципиально если можно решить в других версиях.

Автор - San40
Дата добавления - 04.02.2014 в 23:34
San40 Дата: Вторник, 04.02.2014, 23:56 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Прошу прощения Boroda_, я в свой файл вставлял не посмотрев Ваше вложение.
Вроде все работает, буду тестировать на больших файлах.
СПАСИБО!
И всетаки обратите внимание на макрос Filter2, по моему интересное решение
 
Ответить
СообщениеПрошу прощения Boroda_, я в свой файл вставлял не посмотрев Ваше вложение.
Вроде все работает, буду тестировать на больших файлах.
СПАСИБО!
И всетаки обратите внимание на макрос Filter2, по моему интересное решение

Автор - San40
Дата добавления - 04.02.2014 в 23:56
nilem Дата: Среда, 05.02.2014, 10:27 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
или без фильтра (см. лист Данные)
[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
[/vba]
К сообщению приложен файл: Filter_01_1-2.xls (89.5 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеили без фильтра (см. лист Данные)
[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
[/vba]

Автор - nilem
Дата добавления - 05.02.2014 в 10:27
San40 Дата: Среда, 05.02.2014, 11:37 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
СПАСИБО! за макрос, все работает на УРА!
 
Ответить
СообщениеСПАСИБО! за макрос, все работает на УРА!

Автор - San40
Дата добавления - 05.02.2014 в 11:37
nilem Дата: Среда, 05.02.2014, 11:49 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Интересный момент по поводу Find:
до этого рисовал макрос в другом файле с .Find(x(i, 1), lookat:=xlWhole). Потом открыл файл ТС и написал .Find(x(i, 1)) (т.к. xlPart по умолчанию). Запустил макрос, и Find сработал с параметром xlWhole (поэтому пришлось явно указывать xlPart).
т.е., видимо, ранее использованные параметры Find хранятся где-то на уровне приложения (!). Удивительно...


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 05.02.2014, 11:50
 
Ответить
СообщениеИнтересный момент по поводу Find:
до этого рисовал макрос в другом файле с .Find(x(i, 1), lookat:=xlWhole). Потом открыл файл ТС и написал .Find(x(i, 1)) (т.к. xlPart по умолчанию). Запустил макрос, и Find сработал с параметром xlWhole (поэтому пришлось явно указывать xlPart).
т.е., видимо, ранее использованные параметры Find хранятся где-то на уровне приложения (!). Удивительно...

Автор - nilem
Дата добавления - 05.02.2014 в 11:49
AndreTM Дата: Среда, 05.02.2014, 18:49 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Ну да, в текущей сессии установки "Поиска и замены" сохраняются до закрытия приложения, а .Find использует неуказанные значения параметров оттуда :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНу да, в текущей сессии установки "Поиска и замены" сохраняются до закрытия приложения, а .Find использует неуказанные значения параметров оттуда :)

Автор - AndreTM
Дата добавления - 05.02.2014 в 18:49
San40 Дата: Среда, 05.02.2014, 20:15 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо всем, а если возникает такой момент, в таблице артикул имеется AA-DD-EE, по логике в столбце A должно получится "Болт, гайка, шайба".
 
Ответить
СообщениеСпасибо всем, а если возникает такой момент, в таблице артикул имеется AA-DD-EE, по логике в столбце A должно получится "Болт, гайка, шайба".

Автор - San40
Дата добавления - 05.02.2014 в 20:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отфильтровать столбец B и установить значения в столбец A (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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