Excel - vyhledávací a zobrazovací dotaz

Problém

Jsem non IT osoba .. Mám jednoduchý požadavek, ale nevím, jak jít.

Požadavkem je

 Moje data. Sno Release Project Kontaktní osoby 1 Dub SYL Sam, Mark, Tom 2 Květen Xim Tom, Frank, Kim 3. června TIG Kim, David, Sam 

Můj požadavek je, když jsem hledat podle projektu nebo uvolnění,, Musím se dostat všechny kontaktní osoby jména .. Stejným způsobem, pokud jsem hledat podle kontaktní osoby jméno .. Např. Sam ve výše uvedeném příkladu .. Excel musí ukázat mi všechny projekty, na kterých se Sam podílel se všemi relevantními daty jako Release atd. Toto musí být zobrazeno v novém listu v Excelu.

Je možné to udělat v aplikaci Excel nebo potřebuji zkusit něco jiného? Můžete mi pomoci v tom?

Řešení

Předpoklady:

  • 1. Název listu, kde jsou data "List1" (opravte kód, pokud není)
  • 2. Název listu, do kterého má být výsledek hledání vložen, je „Výsledek“ (opravte kód, pokud není)
  • 3. Předchozí výsledky vyhledávání se zahodí
  • 4. Data jsou ve 4 sloupcích (jako ve vzorku)

KROKY:

  • 1. Přečtěte si předpoklady
  • 2. Proveďte zálohování
  • 3. Současným stisknutím kláves ALT + F11 vstoupíte do prostředí VBE
  • 4. Klikněte na "Vložit" a přidejte nový modul
  • 5. Vložte kód (podle pokynů)
  • 6. Spusťte kód

Kód:

 Sub SearchData () Dim lMaxRows As Long 'max počet řádků dat založených na buňkách použitých ve sloupci A Dim lFilterRows Jako dlouhý' poslední filtrovaný řádek Dim searchRel As Variant 'co má být vyhledáno Informace o vydání Dim searchProj As Variant' co je hledat informace o projektu Dim searchPpl As Variant 'co se má hledat Kontaktní informace Dim sDataSheet As String' název datového listu Dim sResultSheet As String 'název výsledného listu sDataSheet = "Sheet1" název datového listu sResultSheet = "Výsledek" 'název výsledného listu' získávání vyhledávacích kritérií searchRel = InputBox ("Jaké vydání chcete vyhledat. Chcete-li přeskočit, stačí stisknout tlačítko OK.") searchProj = InputBox ("Jaký projekt chcete vyhledat., stačí stisknout OK. ") searchPpl = InputBox (" Která kontaktní osoba má být vyhledána. Chcete-li přeskočit, stačí stisknout OK. ") 'odstranit bílé mezery searchRel = Oříznout (searchRel) searchProj = Oříznout (searchProj) searchPpl = Oříznout (searchPpl ) 'pokud jsou všechna tři kritéria hledání prázdná, pak dont dělat nic If (Len (hledáníRel & searchProj & searchPpl) = 0) Pak Exit Sub On Error Pokračovat Další Application.DisplayAlerts = False 'smaže předchozí výsledkový list, pokud existuje Sheets (sResultSheet) .Delete Application.DisplayAlerts = True On Error GoTo 0' přidává výsledný list Sheets.Add ActiveSheet.Name = sResultSheet listy (sDataSheet) .Vyberte Cells.Select 'odebrání jakéhokoli filtru Pokud ActiveSheet.AutoFilterMode Potom na Chyba Resume Další ActiveSheet.ShowAllData On Error GoTo 0 End Pokud lMaxRows = buňky (Rows.Count, "A"). (xlUp) .Row Pokud ActiveSheet.AutoFilterMode = False pak Selection.AutoFilter End If If (searchRel) "" Pak Selection.AutoFilter Pole: = 2, Kritéria1: = "=" & searchRel, Operator: = xlAnd, Kritéria2: = " "End If If (searchProj)" "" Pak pole Selection.AutoFilter: = 3, Kritéria1: = "=" & searchProj, Operator: = xlAnd, Kritéria2: = "" Konec If If (searchPpl) "" Pak pole Selection.AutoFilter : = 4, Kritéria1: = "= *" & searchPpl & "*", Operator: = xlAnd, Kritéria2: = "" Konec Pokud lFilterRows = Buňky (Rows.Count, "A") Konec (xlUp) .Row Range ("A1: D" & lFilterRows) .Copy Sheets (sResultSheet) .Vyberte rozsah ("A1"). Vyberte ActiveSheet.Paste Sheets (sDataSheet) .Vyberte Cells.Select 'remove any filter Pokud ActiveSheet.AutoFilterMode Potom na Chyba Resume Next ActiveSheet.ShowAllData On Error GoTo 0 End If End Sub 

Poznámka

Díky rizvisa1 za tento tip na fóru.

Předchozí Článek Následující Článek

Nejlepší Tipy