Фильтрация в Excel
Модератор: Naeel Maqsudov
Мне надо купить квартиру, имеется газета в xls формате и телефоны агенств. Квартиру хочу покупать не через агенство, так вот мне из этой электронной газеты надо исключить телефонные номера агенств, что б у меня остались одни хозяева, как мне это сделать? То есть мне надо фильтр по нескольким значением (номеров агенств около 100)
За ранее спасибо!
За ранее спасибо!
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Сначала нужно нормализовать телефонные номера.
Затем:
Телефоны агенств помещаете по одному на ячейку в колонку A на соседнем листе
На вашем рабочем листе с данными добавляете колонку с формулой вида
=ЕСЛИ(ЕНД(ПОИСКПОЗ(АДРЕС_ЯЧЕЙКИ_С_ПРОВЕРЯЕМЫМ_ТЕЛЕФОНОМ;ЛИСТ_АГЕНТСТВ!A:A;0));1;0)
Останется только отфильтровать, например, автофильтром по колонке с формулой и значению 1
Затем:
Телефоны агенств помещаете по одному на ячейку в колонку A на соседнем листе
На вашем рабочем листе с данными добавляете колонку с формулой вида
=ЕСЛИ(ЕНД(ПОИСКПОЗ(АДРЕС_ЯЧЕЙКИ_С_ПРОВЕРЯЕМЫМ_ТЕЛЕФОНОМ;ЛИСТ_АГЕНТСТВ!A:A;0));1;0)
Останется только отфильтровать, например, автофильтром по колонке с формулой и значению 1
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Как можно нормализовать телефонные номера. и что это такое?
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Теоретически телефонный номер в объявлении может быть представлен по разному:
123456
12-34-56
(495)123-456
12 34 56
и т п
По всей видимости вам придётся привести эти номера к одному представлению
это и есть нормализация. Как она делается конкретно - зависит от ваших данных и их структуры...
Рекомендую вам выложить здесь образец файла с объявлениями и списком номеров агентств - тогда можно будет что то более конкретное посоветовать
123456
12-34-56
(495)123-456
12 34 56
и т п
По всей видимости вам придётся привести эти номера к одному представлению
это и есть нормализация. Как она делается конкретно - зависит от ваших данных и их структуры...
Рекомендую вам выложить здесь образец файла с объявлениями и списком номеров агентств - тогда можно будет что то более конкретное посоветовать
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
Образец файла есть здесь: http://www.programmersforum.ru/showthread.php?t=58057
Вот только без отдельного списка телефонов агенств.
Вот только без отдельного списка телефонов агенств.
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
В газете номера вида 123456. В листике что я прилагаю, тоже в таком виде.
- Вложения
-
- Номера агенств.zip
- (2.6 КБ) 43 скачивания
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Alex1990, я ответил вам в #6 посте.Там ссылка на соседний форум.
Я привожу там решение ввобще не требующее предварительного списка номеров.
Но если вы всё же решите фильтровать и по списку, примените к выделенным
номерам способ из поста #2 ...
Я привожу там решение ввобще не требующее предварительного списка номеров.
Но если вы всё же решите фильтровать и по списку, примените к выделенным
номерам способ из поста #2 ...
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Aent, решил действовать пос пособу описанному в 6 посту, в принцепи всё получилось, но мне не понятно как устанавливается автофильтр, скрывающий объявления с числом повторений номера больше 2 или не имеющие номеров телефонов.?? Объясните пожалуйста!
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Alex1990, исходный код макроса доступен в рабочей книге по Alt-F11
Интересующий вас момент там был откомментирован. Но если хотите более подробно - пожалуйста.Естественно, что после работы макроса можно установить любое условие в автофильтре
вручную.
Интересующий вас момент там был откомментирован. Но если хотите более подробно - пожалуйста.
Код: Выделить всё
[color=DarkGreen] ' ....[/color]
[color=Green]' К этому моменту в колонках 3..m уже сформированы выделенные номера телефонов.
' Устанавливаем ранг r для заполненной телефонами области[/color]
[color=Navy]Set[/color] r = [color=Navy]Range[/color]([color=Navy]Cells[/color](1, 3), [color=Navy]Cells[/color](iLast, m))
[color=Navy]For[/color] i = 1 [color=Navy]To[/color] iLast [color=Green]'цикл по объявлениям[/color]
l = 1 [color=Green]'максимальное число повторений[/color]
[color=Navy]For[/color] j = 3 [color=Navy]To[/color] m [color=Green]'цикл по номерам объявления [/color]
[color=Navy]If Len[/color]([color=Navy]Cells[/color](i, j)) > 0 [color=Navy]Then[/color] [color=Green]' ячейка не пустая ?[/color]
[color=Green]'да, применяем к ячейке и рангу r функцию СЧЁТЕСЛИ, подсчитывая количество [/color]
[color=Green]'повторений в ранге r номера из ячейки (i,j)[/color]
k = [color=Navy]CLng[/color]([color=Navy]Application.WorksheetFunction.CountIf[/color](r, [color=Navy]Cells[/color](i, j)))
[color=Navy]If[/color] k > l [color=Navy]Then[/color] l = k [color=Green]' если этот номер больше максимального количества
' повторений для строки, корректируем последнее[/color]
[color=Navy]End If[/color]
[color=Navy] Cells[/color](i, 2) = l [color=DarkGreen]' и заносим его во 2-й столбец[/color]
[color=Navy] Next[/color] j
[color=Navy] Application.StatusBar[/color] = [I]"Считаем повторения: "[/I] & [color=Navy]CStr[/color]([color=Navy]Int[/color](i * 100 / iLast)) & [I]"%"[/I]
[color=Navy]Next[/color] i
[color=Green]' Выбираем объявления с количеством максимально повторяющихся номеров до 2
' Устанавливаем автофильтр.[/color]
[color=Navy]With[/color] [A1]
[color=Navy].AutoFilter Field[/color]:=2, [color=Navy]Criteria1[/color]:=[I]"<=2"[/I] [color=Green]'для колонки B:B (2) выбираем значения не превосходящие 2.[/color]
[color=Green]' Если хотите выбрать единичные, то напишите Criterial1:="=1" [/color]
.[color=Navy]AutoFilter Field[/color]:=3, [color=Navy]Criteria1[/color]:=[I]"<>"[/I] [color=DarkGreen]'прячем строки без телефонов[/color]
[color=Green]' Если телефонов нет, то в 3-й колонке пусто - устанавливаем для неё автофильтр [/color]
[color=Navy]End With[/color]
[color=DarkGreen]' ....[/color]
вручную.
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com