я ввожу критерии поиска в первую ячейку: master во вторую ячейку: 412 в третью ячейку: 13FK
Всем трем требованиям соответствует только четвертая строка. Возможно что будут соответствовать другие строки Нужно их вывести на отдельную страницу или в стороне от общей таблицы.
Можно ли организовать поиск в строке или в ячейке текста, который соответствует моим требованиям. Например есть строки
я ввожу критерии поиска в первую ячейку: master во вторую ячейку: 412 в третью ячейку: 13FK
Всем трем требованиям соответствует только четвертая строка. Возможно что будут соответствовать другие строки Нужно их вывести на отдельную страницу или в стороне от общей таблицы.velemos
Public Sub www() Dim a, f, i& [i1].CurrentRegion.ClearContents On Error Resume Next a = [a5].CurrentRegion.Columns(2) f = Filter(Application.Transpose(a), [c2], , 1) For i = 4 To 8: f = IIf(Cells(2, i) <> "", Filter(f, Cells(2, i), , 1), f): Next [a5].CurrentRegion.AutoFilter 2, f, 7, , 0 AutoFilter.Range.SpecialCells(12).Copy [i1] Me.AutoFilterMode = 0 End Sub
[/vba]
В модуль листа: [vba]
Code
Public Sub www() Dim a, f, i& [i1].CurrentRegion.ClearContents On Error Resume Next a = [a5].CurrentRegion.Columns(2) f = Filter(Application.Transpose(a), [c2], , 1) For i = 4 To 8: f = IIf(Cells(2, i) <> "", Filter(f, Cells(2, i), , 1), f): Next [a5].CurrentRegion.AutoFilter 2, f, 7, , 0 AutoFilter.Range.SpecialCells(12).Copy [i1] Me.AutoFilterMode = 0 End Sub
Спасибо за оперативный ответ. Но. Куда бы ни кликнул мышкой на странице пишет: "Невозможно получить свойство CurrentRegion класса Range" и висит ексель полностью.
В модуль страницы добавил указанный код.
Может есть уже готовое решение для поиска в книге.
Спасибо за оперативный ответ. Но. Куда бы ни кликнул мышкой на странице пишет: "Невозможно получить свойство CurrentRegion класса Range" и висит ексель полностью.
В модуль страницы добавил указанный код.
Может есть уже готовое решение для поиска в книге.velemos
Сообщение отредактировал velemos - Среда, 03.10.2012, 17:30
Вот спасибо. Это я не очень на "ты" с программированием. У вас все работает. я код то добавил, а вот кнопку не знаю как выводить для выполнения функции.
Вот спасибо. Это я не очень на "ты" с программированием. У вас все работает. я код то добавил, а вот кнопку не знаю как выводить для выполнения функции.velemos
Главная - Условное форматирование - Создать правило - Использовать формулу Code=СУММ(--ЕЧИСЛО(ПОИСК($C$2:$G$2;B6)))=5
Можете объяснить. $C$2:$G$2 видимо ячейки, в которых указывается критерий поиска. B6 - видимо ячейка, с которой начинается поиск? но что значит значение =5?
Quote (Полковник МВД)
Главная - Условное форматирование - Создать правило - Использовать формулу Code=СУММ(--ЕЧИСЛО(ПОИСК($C$2:$G$2;B6)))=5
Можете объяснить. $C$2:$G$2 видимо ячейки, в которых указывается критерий поиска. B6 - видимо ячейка, с которой начинается поиск? но что значит значение =5?velemos
5 - это количество критериев поиска (Поле1, поле2, поле3, поле4, поле5). Если все они найдены, то суммируем их количество (оно будет равно пяти). Если равенство - то ИСТИНА, т.е. УФ закрашивает ячейку
Quote (velemos)
что значит значение =5?
5 - это количество критериев поиска (Поле1, поле2, поле3, поле4, поле5). Если все они найдены, то суммируем их количество (оно будет равно пяти). Если равенство - то ИСТИНА, т.е. УФ закрашивает ячейкуПолковник МВД
Public Sub www() Dim a, f, i& [i1].CurrentRegion.ClearContents Выбор прямоугольного диапазона ячеек -> очистка диапазона. Как задать другой диапазон очистки? On Error Resume Next Указывает, что возникновение ошибки выполнения приводит к передаче управления на инструкцию, непосредственно следующую за инструкцией, при выполнении которой возникла ошибка. Это понятно. a = [a5].CurrentRegion.Columns(2) Выбор прямоугольного диапазона ячеек (столбец 2). Если я напишу например Columns(3) - это будет третий стлбец? Как выбрать, допустим, 2 столбца? f = Filter(Application.Transpose(a), [c2], , 1) Создает массив начиная с ячейки С2? For i = 4 To 8: f = IIf(Cells(2, i) <> "", Filter(f, Cells(2, i), , 1), f): Next [a5].CurrentRegion.AutoFilter 2, f, 7, , 0 AutoFilter.Range.SpecialCells(12).Copy [i1] Me.AutoFilterMode = 0 End Sub
В общем можно ли искать на других страницах? Как то так наверное. Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Public Sub www() Dim a, f, i& [i1].CurrentRegion.ClearContents Выбор прямоугольного диапазона ячеек -> очистка диапазона. Как задать другой диапазон очистки? On Error Resume Next Указывает, что возникновение ошибки выполнения приводит к передаче управления на инструкцию, непосредственно следующую за инструкцией, при выполнении которой возникла ошибка. Это понятно. a = [a5].CurrentRegion.Columns(2) Выбор прямоугольного диапазона ячеек (столбец 2). Если я напишу например Columns(3) - это будет третий стлбец? Как выбрать, допустим, 2 столбца? f = Filter(Application.Transpose(a), [c2], , 1) Создает массив начиная с ячейки С2? For i = 4 To 8: f = IIf(Cells(2, i) <> "", Filter(f, Cells(2, i), , 1), f): Next [a5].CurrentRegion.AutoFilter 2, f, 7, , 0 AutoFilter.Range.SpecialCells(12).Copy [i1] Me.AutoFilterMode = 0 End Sub
В общем можно ли искать на других страницах? Как то так наверное. Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")velemos
CurrentRegion это и правда прямоугольный диапазон ячеек ограниченный пустыми строками-столбцами. Чтоб задать другой, в конструкции [i1].CurrentRegion, вместо [i1] достаточно указать любую ячейку в его пределах. Чтоб искать на других страницах, нужно знать - на каких. Если на всех - один подход, если на некоторых - другой. Выложи Вы сразу пример приближенный к реальности, да с описанием, давно бы забыли тему.
Quote
Как выбрать, допустим, 2 столбца?
Выбрать-то можно. Но функция Filter работает только с одномерным массивом.
CurrentRegion это и правда прямоугольный диапазон ячеек ограниченный пустыми строками-столбцами. Чтоб задать другой, в конструкции [i1].CurrentRegion, вместо [i1] достаточно указать любую ячейку в его пределах. Чтоб искать на других страницах, нужно знать - на каких. Если на всех - один подход, если на некоторых - другой. Выложи Вы сразу пример приближенный к реальности, да с описанием, давно бы забыли тему.
Quote
Как выбрать, допустим, 2 столбца?
Выбрать-то можно. Но функция Filter работает только с одномерным массивом.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Четверг, 04.10.2012, 14:18
Да я как раз таки от возможностей Excel и отталкиваюсь. И какой то пример можно сделать исходя из того, что можно сделать. А спрашиваю я, потому что хочу понять как это работает. Вообще мне приходит 5 файлов. изначально я думал копировать все прайсы на одну сраницу, и там уже искать. Этот вопрос уже решили, только я хотел теперь поменять местами область поиска и облать вывода результата. Потом, когда пытался разобраться в этом коде, то понял что можно искать и на других страницах. Это уже лучше, то есть каждый прайс на отдельной странице, а вывод на первую. А самый идеальный вариант - поиск по нескольким файлам отдельным (достаточно по одному столбцу, допустим второму) с выводом на страницу с макросом всех найденых строк.
Да я как раз таки от возможностей Excel и отталкиваюсь. И какой то пример можно сделать исходя из того, что можно сделать. А спрашиваю я, потому что хочу понять как это работает. Вообще мне приходит 5 файлов. изначально я думал копировать все прайсы на одну сраницу, и там уже искать. Этот вопрос уже решили, только я хотел теперь поменять местами область поиска и облать вывода результата. Потом, когда пытался разобраться в этом коде, то понял что можно искать и на других страницах. Это уже лучше, то есть каждый прайс на отдельной странице, а вывод на первую. А самый идеальный вариант - поиск по нескольким файлам отдельным (достаточно по одному столбцу, допустим второму) с выводом на страницу с макросом всех найденых строк.velemos
Я же Вам объяснил - можно искать и на разных страницах и в (дополню) разных файлах. Но если Вы ожидаете универсальный макрос, то напрасно. Нет таких. Макросы, как правило, пишутся под конкретную задачу, к-рую необходимо выполнять многократно. Или очень сложную задачу, к-рую надо выполнить один раз, но вручную это очень накладно и велика вероятность ошибки оператора:-)
Я же Вам объяснил - можно искать и на разных страницах и в (дополню) разных файлах. Но если Вы ожидаете универсальный макрос, то напрасно. Нет таких. Макросы, как правило, пишутся под конкретную задачу, к-рую необходимо выполнять многократно. Или очень сложную задачу, к-рую надо выполнить один раз, но вручную это очень накладно и велика вероятность ошибки оператора:-)KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Спасибо большое. пока хватит и этого макроса, который Вы мне дали. Буду копировать прайсы. На один лист. единственное, хочу спросить как поменять местами область поиска и область вывода найденного? Если не сложно.
Спасибо большое. пока хватит и этого макроса, который Вы мне дали. Буду копировать прайсы. На один лист. единственное, хочу спросить как поменять местами область поиска и область вывода найденного? Если не сложно.velemos