Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 10:58   #1
mr-111
Пользователь
 
Регистрация: 01.03.2012
Сообщений: 11
По умолчанию макрос для поиска позиций и вывода данных на лист поиска

Здравствуйте!
Перечитал кучу форумов, пересмотрел кучу примеров по примерно такой же теме, нот не фига не понял...) Поэтому прошу помощи.)
Задача следующая:
сделать поле для ввода 1-10 позиций на первом листе книги. При заполнении данного поля (или ячеек), при нажатии книпки "поиск" автоматически ниже выписываются полностью строки из остальных листов книге, содержащие введенные значения.
Заранее спасибо!
Вложения
Тип файла: zip Example-1.zip (53.3 Кб, 33 просмотров)
mr-111 вне форума Ответить с цитированием
Старый 01.03.2012, 12:00   #2
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

А какой критерий поиска? Он общий для всех листов?
strannick вне форума Ответить с цитированием
Старый 01.03.2012, 13:34   #3
mr-111
Пользователь
 
Регистрация: 01.03.2012
Сообщений: 11
По умолчанию

да, общий.
Т.е. критерий поиска вводиться в поле поиска. Совпадения должны искаться по столбцам p/n и description.
Спасибо!
mr-111 вне форума Ответить с цитированием
Старый 01.03.2012, 15:06   #4
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

То есть полей ввода должно быть 2. Одно для столбца p/n, второе для столбца description. Задаются вручную. И при совпадении в двух этих стобцах выводится вся строка. Так?
strannick вне форума Ответить с цитированием
Старый 01.03.2012, 16:23   #5
mr-111
Пользователь
 
Регистрация: 01.03.2012
Сообщений: 11
По умолчанию

не совсем.
Поле вывода - как на первом листе книги (SEARCH).
Т.е. выводится должна вся строка полностью. Совпадение должно либо по столбцу P/N либо по столбцу description.
Т.е. идея такая:
все эти листы в книги обозначают нахождение на стоке: зеленая зона, карантинная зона, б/у материалы, отправлено в ремонт, отправленно потребителю, возвращено от потребителя. Пользуясь первым листов (search) хотелось бы видеть полною информацию по введенному в поле поиска артикулу (p/n) или по описанию (description). Таким образом отпадает необходимость просматривать все листы в книге и пользоваться на каждом из них автофильтром (т.к. один и тот же артикул может повторяться не только на одном листе, но и на других) и потом вручную копировать на другой лист.
Сейчас делаю это вручную, но массив информации уже большой и часто приходится этим заниматься, - отнимает оч. много времени.
Огромное спасибо, если поможете!
mr-111 вне форума Ответить с цитированием
Старый 02.03.2012, 13:45   #6
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

макрос:
Код:
Sub SearchAll()
  Dim sh As Worksheet, rg As Range, rgs As Range, r1 As Long, r2 As Long, r As Long, rfs As Integer
  Dim c1 As Long, c2 As Long, c As Long, c0 As Long, ca As Long, s As String
  Cells.EntireRow.AutoFit: On Error Resume Next
  rfs = Application.ReferenceStyle: Application.ReferenceStyle = xlR1C1
  With ActiveSheet.Outline: .AutomaticStyles = False: .SummaryRow = xlAbove: End With
  With ActiveSheet.UsedRange.SpecialCells(xlLastCell)
    If .Row > 3 Then Set rg = Range(Cells(3, 1), Cells(.Row, .Column)): _
      rg.ClearContents: rg.ClearFormats: Rows.Ungroup: If Err.Number > 0 Then Err.Clear
  End With: r2 = 2
  For Each sh In Sheets: With sh
    r1 = r2
    If .Index <> ActiveSheet.Index Then
      For i = 1 To 2
        c = WorksheetFunction.Match(Cells(i, 1), .Rows(1), 0)
        If Err.Number = 0 Then
          For c1 = 2 To Cells(i, 1).End(xlToRight).Column
            r = 1: Do
              r = r + WorksheetFunction.Match(Cells(i, c1), .Range(.Cells(r + 1, c), .Cells(.Rows.Count, c)), 0)
              If r1 <> r2 And i = 2 Then ca = WorksheetFunction.Match(Cells(3 - i, 1), Rows(r1 + 1), 0)
              If Err.Number = 0 Then
и т.д. вплоть до End Sub.
результаты во вложении.
изменил немного структуру файла: искомые p\n & description находятся в двух первых строках, результаты - начиная с 4-й строки.
не все данные с листов оказались в результатах потому что (с точки зрения Ексель) например, цифра 2 сильно отличается от строки со знаком 2 (хотя визульно они одинаковы)
поиск происходит сначала по p\n потом по description с проверкой на уже вошедшие в отчет p\n.
Вложения
Тип файла: rar КнигаR792.rar (32.7 Кб, 59 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.03.2012, 14:09   #7
mr-111
Пользователь
 
Регистрация: 01.03.2012
Сообщений: 11
По умолчанию

В примере на листе у Вас все идеально красиво и правильно. Абсолютно не важно p/n и description для поиска заполняется в строчку или в столбик, смысл тот же, но, к сожалению, не работает.
Вернее, уверен, работает, но я не знаю как это "заставить работать" )
При нажатии на кнопку поиска - пишет, что макроса нет. Когда же я копи пастю его из Вашего ответа и вставляю в модуль, нажимаю выполнить - Ексель пишет "остонавливаюсь, закрываюсь" и т.п.
Сорри за мою глупость и не понимание как это запустить, но расскажите, плз, подробнее как это заставить работать?
mr-111 вне форума Ответить с цитированием
Старый 02.03.2012, 14:59   #8
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Игорь, там во вложенном файле нет макроса. Глюк какой-то. Перезалейте пожалуйста.
И если есть возможность, взгляните на http://programmersforum.ru/showthread.php?t=189424. Там тоже вопрос по множественному критерию.
strannick вне форума Ответить с цитированием
Старый 02.03.2012, 15:24   #9
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

mr-111,
Цитата:
плз, подробнее как это заставить работать?
извините, я действительно выложил не работающее решение, а только образец отчета, полученного с помощью макроса, начало которого приведено в сообщении (это не полный макрос, он не будет работать). читайте внимательно подпись под сообщением - там есть подсказка, как это можно запустить.

strannick,
обязательно посмотрю))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.03.2012, 18:32   #10
mr-111
Пользователь
 
Регистрация: 01.03.2012
Сообщений: 11
По умолчанию

Игорь, спасибо)
понимаю, что это начало, но как его закончить - не понимаю вооообще)
Я макросами пользовался только написанными кем-то, сам ни разу не писал).
Буду разбираться с ним пару месяцев)
Если не сложно, закончите, плз, для поиска одной позиции а не нескольких, чтоб было как образец, а я потом остальные туда уже после месяца изучения впишу).
Огромное спасибо!
mr-111 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для поиска и выделения слов Angry_Kitty Microsoft Office Word 11 07.10.2014 22:01
Макрос для поиска совпадений Dealaxer Microsoft Office Excel 18 26.09.2012 17:33
Макрос для поиска строки tanyshenka09 Помощь студентам 1 06.12.2011 21:55
Макрос для поиска и отметки shafl Microsoft Office Excel 6 17.09.2010 10:57
Макрос для поиска/замены Davidoff Microsoft Office Excel 1 20.01.2007 16:01