„Excel“ - paieškos ir rodymo užklausa

Problema

Aš esu ne IT asmuo. Turiu paprastą reikalavimą, bet nežinau, kaip eiti.

Reikalavimas yra

 Mano duomenys. Sno spaudos projektas Kontaktiniai asmenys 1 balandis SYL Sam, Markas, Tomas 2 Gegužė Xim Tom, Frank, Kim 3 Bir TIG Kim, David, Sam 

Mano reikalavimas yra tada, kai aš ieškoju pagal projektą arba išleidžiant,, Turiu gauti visus kontaktinio asmens vardus. Taip pat, jei ieškosiu pagal kontaktinio asmens vardą. Pvz., Sam pirmiau pateiktame pavyzdyje. visi projektai, kuriuos Sam dalyvavo su visais svarbiais duomenimis, pvz., „Release etc“. Tai turi būti rodoma naujame „Excel“ lape.

Ar galima tai padaryti „Excel“ programoje arba man reikia išbandyti ką nors kitą? Ar galite man padėti tai padaryti?

Sprendimas

Prielaidos:

  • 1. Lapo pavadinimas, kuriame duomenys yra "Sheet1" (pataisykite kodą, jei ne)
  • 2. Puslapio, kuriame turi būti įklijuotas paieškos rezultatas, pavadinimas yra „Rezultatas“ (pataisykite kodą, jei ne)
  • 3. Ankstesni paieškos rezultatai turi būti atmesti
  • 4. Duomenys pateikiami 4 stulpeliuose (kaip pavyzdyje)

Žingsniai:

  • 1. Perskaitykite prielaidas
  • 2. Padarykite atsarginę kopiją
  • 3. Vienu metu paspauskite ALT + F11, kad patektumėte į VBE aplinką
  • 4. Spustelėkite „Įterpti“ ir pridėkite naują modulį
  • 5. Įklijuokite kodą (po instrukcijų)
  • 6. Paleiskite kodą

Kodas:

 Sub SearchData () Dim lMaxRows As Long 'maksimalus duomenų eilių skaičius, pagrįstas A stulpelyje naudojamomis ląstelėmis Dim lFilterRows As Long' paskutinė filtruota eilutė Dim searchRel As Variant ', kas turi būti ieškoma Release Info Dim searchProj As Variant' kas yra ieškoti Projekto informacija Dim searchPpl As Variant ", kas turi būti ieškoma Kontaktinė informacija Dim sDataSheet As String" duomenų lapo pavadinimas Dim sResultSheet Kaip eilutė "rezultatų lapo pavadinimas sDataSheet =" Sheet1 "" duomenų lapo pavadinimas sResultSheet = "Rezultatas" 'rezultato lapo pavadinimas' paieškos kriterijų paieška 'SearchRel = InputBox ("Ką norite ieškoti. Norėdami praleisti, tiesiog paspauskite OK.") searchProj = InputBox ("Kokį projektą norite ieškoti., tiesiog paspauskite Gerai. ") searchPpl = InputBox (" Kuris kontaktinis asmuo norite ieškoti. Norėdami praleisti, tiesiog paspauskite OK. ") 'pašalinti baltas erdves searchRel = Trim (searchRel) searchProj = Trim (searchProj) searchPpl = Trim (searchPpl ) „jei visi trys paieškos kriterijai yra tušti, tada nedarykite nieko, jei (Len (searchRel & searchProj & searchPpl) = 0) Tada Exit Sub On Error Atnaujinti Next Application.DisplayAlerts = False 'ištrinti ankstesnį rezultato lapą, jei jis yra Sheets (sResultSheet) .Delete Application.DisplayAlerts = True On Error GoTo 0' pridedant rezultatų lapą Sheets.Add ActiveSheet.Name = sResultSheet lapai (sDataSheet) .Pasirinkite „Cells.Select“, pašalinkite bet kurį filtrą, jei ActiveSheet.AutoFilterMode Tada klaida Atnaujinkite Next ActiveSheet.ShowAllData On Error GoTo 0 Pabaiga Jei lMaxRows = Ląstelės (eilutės. (xlUp) .Veikia, jei ActiveSheet.AutoFilterMode = False Tada Selection.AutoFilter End Jei If (searchRel) "" tada Selection.AutoFilter Field: = 2, kriterijai1: = "=" & searchRel, Operatorius: = xlAnd, kriterijai2: = " "Pabaiga Jei If (searchProj)" "Tada Selection.AutoFilter Field: = 3, kriterijai1: =" = "& searchProj, Operatorius: = xlAnd, Criteria2: =" "Pabaiga Jei If (searchPpl)" "Tada Selection.AutoFilter Field : = 4, kriterijai1: = "= *" & searchPpl & "*", operatorius: = xlAnd, kriterijai2: = "" pabaiga Jei lFilterRows = ląstelės (eilutės.Skaičiuoti, "A"). Pabaiga (xlUp). ("A1: D" & lFilterRows) .Kopijuokite lapus (sResultSheet) .Pasirinkite diapazoną („A1“). Pasirinkite „ActiveSheet.Paste Sheets“ (sDataSheet) .Pasirinkite „Cells.Select“, pašalindami bet kokį filtrą, jei ActiveSheet.AutoFilterMode Tuomet įjungta klaida. 0 Pabaiga Jei pabaiga 

Pastaba

Ačiū rizvisa1 už šį patarimą forume.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai