Excel - otsingu ja kuvamise päring

Probleem

Ma olen mitte IT-inimene. Mul on lihtne nõue, kuid ei tea, kuidas edasi minna.

Nõue on

 Minu andmed. Sno Release Project Kontaktisikud 1. aprill SYL Sam, Mark, Tom 2. mai Xim Tom, Frank, Kim 3. juuni TIG Kim, David, Sam 

Minu nõue on siis, kui ma otsin projekti või vabanemise teel,, Mul on vaja saada kõik kontaktisiku nimed. Samamoodi, kui otsin kontaktisiku nime järgi. Nt Sam eespool ülaltoodud näites. Excel peab näitama mulle kõik projektid, mis Sam oli seotud kõigi asjakohaste andmetega, nagu Release jne. See peab olema näidatud uuel lehel Excelis.

Kas on võimalik Excelis teha või ma pean midagi muud proovima? Kas sa saad mind aidata seda teha?

Lahendus

Eeldused:

  • 1. Lehe nimi, kus andmed on "Sheet1" (parandage kood, kui see pole)
  • 2. Lehe nimi, kuhu otsingutulemus kleebitakse, on "Tulemus" (korrigeerige koodi, kui see pole)
  • 3. Varasemad otsingutulemused tuleb ära visata
  • 4. Andmed on 4 veerus (nagu näidises)

SAMMUD:

  • 1. Loe eeldusi
  • 2. Tee varundamine
  • 3. Vajutage korraga ALT + F11, et siseneda VBE keskkonda
  • 4. Klõpsake "Insert" ja lisage uus moodul
  • 5. Kleebi kood (pärast juhiseid)
  • 6. Käivitage kood

Kood:

 Sub SearchData () Dim lMaxRows As Long 'max veerus rida andmeliine, mis põhinevad veerus A kasutatavatel rakkudel Dim lFilterRows Nagu kaua' viimane filtreeritud rida Dim searchRel As Variant ', mida otsida Release Info Dim searchProj As Variant' mis on otsida projektiinfo Dim searchPpl As Variant ', mida tuleb otsida Kontaktandmed Dim sDataSheet As String' andmelehe nimi Dim sResultSheet Nagu String 'tulemustabeli nimi sDataSheet = "Sheet1"' andmelehe nimi sResultSheet = "Tulemuslehe nimi" otsingukriteeriumide otsimine searchRel = InputBox ("Mida soovite otsida, mida soovite otsida. Jäta vahele, vajuta OK.") searchProj = InputBox ("Millist projekti soovite otsida., vajuta OK. ") searchPpl = InputBox (" Milline kontaktisik soovite otsida. Jäta vahele, vajuta OK. ")" eemalda valged tühikud searchRel = Trim (searchRel) searchProj = Trim (searchProj) searchPpl = Trim (searchPpl) ) „kui kõik kolm otsingukriteeriumit on tühjad, siis ärge tehke midagi, kui (Len (searchRel & searchProj & searchPpl) = 0) Seejärel välju Sub On Error Jätka Järgmine rakendus.DisplayAlerts = False 'kustutage eelmine tulemuste leht, kui see on olemas Sheets (sResultSheet) .Delete Application.DisplayAlerts = True On Error GoTo 0' tulemuste lehele lisamine. ActiveSheet.Name = sResultSheet Sheets (sDataSheet) .Select Cells.Select 'eemalda kõik filtrid Kui ActiveSheet.AutoFilterMode siis On Error Jätka Next ActiveSheet.ShowAllData On Error GoTo 0 End Kui lMaxRows = lahtrid (read.Count, "A"). (xlUp) .Row Kui ActiveSheet.AutoFilterMode = False ja seejärel valimine.AutoFilter End Kui If (searchRel) "" Seejärel Selection.AutoFilter väli: = 2, kriteeriumid1: = "=" & searchRel, Operaator: = xlAnd, kriteeriumid2: = " "End If If (searchProj)" "Seejärel Selection.AutoFilter Field: = 3, Criteria1: =" = "& searchProj, Operaator: = xlAnd, Criteria2: =" "End If If (searchPpl)" "Seejärel Selection.AutoFilter Field : = 4, kriteeriumid1: = "= *" & searchPpl & "*", operaator: = xlAnd, kriteeriumid2: = "" lõpp Kui lFilterRows = lahtrid (read.Count, "A"). End (xlUp). ("A1: D" & lFilterRows) .Koopialehed (sResultSheet) .Valige vahemik ("A1"). Valige ActiveSheet.Paste Sheets (sDataSheet) .Vali Cells.Select 'eemaldades kõik filtrid Kui ActiveSheet.AutoFilterMode siis on viga Jätka järgmist ActiveSheet.ShowAllData 0 Lõpeta kui lõppu 

Märge

Täname rizvisa1 selle foorumi vihje eest.

Eelmine Artikkel Järgmine Artikkel

Top Näpunäited