Excel - poizvedba za iskanje in prikaz

Težava

Jaz sem ne IT oseba .. Imam preprosto zahtevo, vendar ne vem, kako iti okoli.

Zahteva je

 Moji podatki. Projekt Sno Release Kontaktne osebe 1 apr SYL Sam, Mark, Tom 2 maj Xim Tom, Frank, Kim 3. junij TIG Kim, David, Sam 

Moja zahteva je, ko iščem po projektu ali z izdajo, moram dobiti vsa imena kontaktne osebe .. Na enak način, če iščem po imenu kontaktne osebe .. Npr. Sam v zgornjem primeru .. Excel mi mora pokazati. vsi projekti, s katerimi je bil Sam vključen z vsemi ustreznimi podatki, kot je Release itd. To mora biti prikazano v novem listu v Excelu.

Ali je mogoče storiti v Excelu ali pa moram poskusiti nekaj drugega? Mi lahko pomagaš pri tem?

Rešitev

Predpostavke:

  • 1. Ime lista, kjer so podatki "Sheet1" (popravite kodo, če ni)
  • 2. Ime lista, v katerega želite prilepiti rezultat iskanja, je "Rezultat" (popravite kodo, če ni)
  • 3. Predhodne rezultate iskanja je treba zavreči
  • 4. Podatki so na 4 stolpcih (kot v vzorcu)

KORAKI:

  • 1. Preberite predpostavke
  • 2. Naredite varnostno kopijo
  • 3. Hkrati pritisnite ALT + F11, da vstopite v okolje VBE
  • 4. Kliknite »Vstavi« in dodajte nov modul
  • 5. Prilepite kodo (po navodilih)
  • 6. Zaženite kodo

Koda:

 Pod SearchData () Dim lMaxRows As Long 'največje število vrstic podatkov, ki temeljijo na celicah, uporabljenih v stolpcu A Dim lFilterRows As Long' zadnja filtrirana vrstica Dim searchRel As Variant 'kaj naj se išče za Release Info Dim searchProj kot varianta' kaj je za iskanje informacij o projektu Dim searchPpl kot varianta 'kaj je treba poiskati za informacije o kontaktu Dim sDataSheet As String' ime podatkovnega lista Dim sResultSheet As String 'ime rezultata lista sDataSheet = "Sheet1"' ime podatkovnega lista sResultSheet = "Rezultat" "ime rezultatskega lista" pri iskanju meril za iskanje searchRel = InputBox ("Kaj želite izdati za iskanje. Če želite preskočiti, samo pritisnite OK.") searchProj = InputBox ("Kakšen projekt želite iskati., samo pritisnite OK.)) searchPpl = InputBox ("Katera kontaktna oseba želite poiskati. Če želite preskočiti, samo pritisnite OK.") 'odstranite bele presledke searchRel = Trim (searchRel) searchProj = Trim (searchProj) searchPpl = Trim (iskanjePpl) ) 'če so vsa tri iskalna merila prazna, potem ne delajte ničesar, če (Len (searchRel & searchProj & searchPpl) = 0) Nato zapustite pod napako Nadaljuj Naslednja Application.DisplayAlerts = False 'izbrišite prejšnji rezultat, če obstaja Sheets (sResultSheet) .Delete Application.DisplayAlerts = True On Error GoTo 0' dodajanje listov rezultatov. ActiveSheet.Name = sResultSheet Sheets (sDataSheet) .Select Cells.Select 'remove any filter Če je ActiveSheet.AutoFilterMode nato napaka nadaljevanje Next ActiveSheet.ShowAllData na napako GoTo 0 End Če lMaxRows = Celice (Rows.Count, "A"). (xlUp) .Row Če ActiveSheet.AutoFilterMode = False potem Izbira.AutoFilter End Če If (searchRel) "" Potem Selection.AutoFilter Field: = 2, Criteria1: = "=" & searchRel, Operator: = xlAnd, Criteria2: = " "End Če If (searchProj)" "Potem Selection.AutoFilter Field: = 3, Criteria1: =" = "& searchProj, Operator: = xlAnd, Criteria2: =" "Konec Če Če (searchPpl)" "Potem Selection.AutoFilter Field \ t : = 4, Criteria1: = "= *" & searchPpl & "*", Operator: = xlAnd, Criteria2: = "" Konec Če lFilterRows = Celice (Rows.Count, "A"). End (xlUp) .Row Range ("A1: D") & lFilterRows) .Copy Sheets (sResultSheet) .Select Range ("A1") Izberite ActiveSheet.Paste Sheets (sDataSheet) .Izberite Cells.Select 'odstranitev vsega filtra Če ActiveSheet.AutoFilterMode nato na napako nadaljuj Next ActiveSheet.ShowAllData ob napaki GoTo 0 Konec, če se konča Pod 

Opomba

Hvala za rizvisa1 za ta nasvet na forumu.

Prejšnji Članek Naslednji Članek

Top Nasveti