Excel - заявка за търсене и показване

Проблем

Аз не съм ИТ лице .. Имам просто изискване, но не знам как да отида.

Изискването е

 Моите данни. Проект за Sno Release Контактни лица 1 април SYL Sam, Mark, Tom 2 май Xim Tom, Frank, Kim 3 юни TIG Kim, David, Sam 

Моето изискване е, когато търся по проект или чрез освобождаване, аз трябва да получа всички имена на лицето за контакт .. По същия начин, ако търся по име на лице за контакт .. Например Сам в горния пример .. В Excel трябва да ми покаже всички проекти, които Сам участваше с всички съответни данни като Release и т.н. ... Това трябва да се покаже в нов лист в excel.

Възможно ли е да се направи в Excel или трябва да опитам нещо друго? Можете ли да ми помогнете в това?

Решение

Предположения:

  • 1. Име на листа, където данните са "Лист1" (коригирайте кода, ако не е)
  • 2. Името на листа, където трябва да се постави резултатът от търсенето, е "Резултат" (коригирайте кода, ако не е)
  • 3. Предишните резултати от търсенето трябва да бъдат отхвърлени
  • 4. Данните са на 4 колони (както в извадката)

СТЪПКИ:

  • 1. Прочетете предположенията
  • 2. Направете резервно копие
  • 3. Натиснете ALT + F11 едновременно, за да влезете във VBE среда
  • 4. Кликнете върху „Insert“ и добавете нов модул
  • 5. Поставете кода (след инструкциите)
  • 6. Стартирайте кода

Код:

 Sub SearchData () Dim lMaxRows As Long 'макс. Брой редове от данни, базирани на клетки, използвани в колона A Dim lFilterRows As Long' последно филтриран ред Dim searchRel As Variant 'какво трябва да се търси за Release Info Dim searchProj As Variant' за търсене на информация за проекта Dim searchPpl As Variant 'какво трябва да се търси Информация за контакт Dim sDataSheet As String' име на информационния лист Dim sResultSheet As String 'име на листа с резултати sDataSheet = "Sheet1"' име на информационния лист sResultSheet = "Резултат" "име на листа с резултати" получаване на критерии за търсене searchRel = InputBox ("Какво съобщение искате да търсите. За да прескочите, просто натиснете OK.") searchProj = InputBox ("Какъв проект искате да търсите., просто натиснете OK.)) searchPpl = InputBox ("Кое лице за контакт искате да търсите. За да прескочите, просто натиснете OK.") 'премахнете белите пространства searchRel = Trim (searchRel) searchProj = Trim (searchProj) searchPpl = Trim (searchPpl) ) „ако всичките три критерия за търсене са празни, тогава не правете нищо, ако (Len (searchRel & searchProj & searchPpl) = 0) След това излезте под грешката Resume Next Application.DisplayAlerts = False 'изтрийте предишния лист с резултати, ако той съществува Листове (sResultSheet) .Delete Application.DisplayAlerts = Вярно при грешка GoTo 0' добавяне на таблици с резултати. Избор на премахване на всеки филтър Ако ActiveSheet.AutoFilterMode тогава на грешка възобнови следващия ActiveSheet.ShowAllData на грешка GoTo 0 Край Ако lMaxRows = клетки (Rows.Count, "А"). (xlUp) .Row Ако ActiveSheet.AutoFilterMode = False тогава Selection.AutoFilter End Ако If (searchRel) "" Тогава Selection.AutoFilter поле: = 2, Criteria1: = "=" & searchRel, Оператор: = xlAnd, Критерий2: = " "Край Ако If (searchProj)" "Тогава Selection.AutoFilter Поле: = 3, Критерий1: =" = "& searchProj, Оператор: = xlAnd, Criteria2: =" "Край Ако Ако (searchPpl)" "Тогава Selection.AutoFilter поле : = 4, Criteria1: = "= *" & searchPpl & "*", Оператор: = xlAnd, Criteria2: = "" Край Ако lFilterRows = Cells (Rows.Count, "A"). End (xlUp) .Row Range ( "А1: D" Избери обхват ("A1"). Изберете ActiveSheet.Paste Sheets (sDataSheet) .Изберете клетки. Изберете 'премахване на всеки филтър Ако ActiveSheet.AutoFilterMode тогава на грешка възобнови следващия ActiveSheet.ShowAllData при грешка 0 Край, ако е край Sub 

Забележка

Благодарение на rizvisa1 за този съвет на форума.

Предишна Статия Следваща Статия

Топ Съвети