Excel - vyhľadávací a zobrazovací dopyt

Problém

Som osoba, ktorá nie je IT .. Mám jednoduchú požiadavku, ale neviem, ako ísť.

Požiadavka je

 Moje údaje. Sno Release Project Kontaktné osoby 1 Apr SYL Sam, Mark, Tom 2 May Xim Tom, Frank, Kim 3. jún TIG Kim, David, Sam 

Moja požiadavka je, keď som hľadať podľa projektu alebo uvoľnenie,, Musím získať všetky mená kontaktných osôb .. Rovnakým spôsobom, ak hľadám podľa kontaktnej osoby meno .. Napr. Sam vo vyššie uvedenom príklade .. Excel musí ukázať mi všetky projekty, na ktorých sa Sam podieľal so všetkými relevantnými údajmi ako Release atď ... Toto sa musí zobraziť v novom hárku v programe Excel.

Je možné to urobiť v Exceli alebo potrebujem vyskúšať niečo iné? Môžete mi pomôcť pri tom?

Riešenie

predpoklady:

  • 1. Názov listu, kde je údaj "Sheet1" (opravte kód, ak nie je)
  • 2. Názov hárku, do ktorého sa má výsledok vyhľadávania prilepiť, je „Výsledok“ (ak nie je uvedený, opravte ho)
  • 3. Predchádzajúce výsledky vyhľadávania sa majú zahodiť
  • 4. Údaje sú na 4 stĺpcoch (ako vo vzorke)

POSTUP:

  • 1. Prečítajte si predpoklady
  • 2. Vytvorte zálohu
  • 3. Súčasne stlačte klávesy ALT + F11 na vstup do prostredia VBE
  • 4. Kliknite na "Vložiť" a pridajte nový modul
  • 5. Vložte kód (podľa pokynov)
  • 6. Spustite kód

kód:

 Sub SearchData () Dim lMaxRows As Long 'max počet riadkov údajov založených na bunkách použitých v stĺpci A Dim lFilterRows As Long' posledný filtrovaný riadok Dim searchRel As Variant 'čo sa má hľadať pre Release Info Dim searchProj As Variant' čo je hľadať informácie o projekte Dim searchPpl As Variant 'čo je potrebné hľadať Kontaktné informácie Dim sDataSheet As String' názov dátového listu Dim sResultSheet As String 'názov výsledného hárku sDataSheet = "Sheet1" názov dátového listu sResultSheet = "Výsledok" 'názov výsledného listu' získanie kritérií vyhľadávania searchRel = InputBox ("Aké vydanie chcete vyhľadať. Ak chcete preskočiť, stačí stlačiť OK.") searchProj = InputBox ("Aký projekt chcete vyhľadať.", stačí stlačiť OK. ") searchPpl = InputBox (" Ktorá kontaktná osoba má byť vyhľadávaná. Ak chcete preskočiť, stačí stlačiť OK. ") 'odstrániť medzery searchRel = Orezať (searchRel) searchProj = Orezať (searchProj) searchPpl = Orezať (searchPpl ) 'ak sú všetky tri kritériá vyhľadávania prázdne, potom dont robiť nič If (Len (searchRel & searchProj & searchPpl) = 0) Potom Exit Sub On Error Pokračovať Next Application.DisplayAlerts = False 'vymazať predchádzajúci výsledný list, ak existuje Sheets (sResultSheet) .Delete Application.DisplayAlerts = True On Error GoTo 0' pridanie výsledného listu Sheets.Add ActiveSheet.Name = sResultSheet listy (sDataSheet) .Vyberte Cells.Select 'odstránenie akéhokoľvek filtra Ak ActiveSheet.AutoFilterMode Potom na Chyba Resume Next ActiveSheet.ShowAllData On Error GoTo 0 End Ak lMaxRows = Bunky (Rows.Count, "A"). (xlUp) .Row Ak ActiveSheet.AutoFilterMode = False Potom Selection.AutoFilter End If If (searchRel) "" Potom Selection.AutoFilter Pole: = 2, Kritérium1: = "=" & searchRel, Operator: = xlAnd, Kritérium2: = " "Koniec If If (searchProj)" "Potom Selection.AutoFilter Pole: = 3, Kritérium1: =" = "& searchProj, Operátor: = xlAnd, Kritérium2: =" "Koniec If If (searchPpl)" "Potom Selection.AutoFilter pole : = 4, Kritérium1: = "= *" & searchPpl & "*", Operátor: = xlAnd, Kritérium2: = "" Koniec Ak lFilterRows = Bunky (Rows.Count, "A") Koniec (xlUp) .Row Range ( "A1: D" & lFilterRows) .Copy Sheets (sResultSheet) .Vyberte rozsah ("A1") Vyberte ActiveSheet.Paste Sheets (sDataSheet) .Vyberte Cells.Select 'remove any filter Ak je ActiveSheet.AutoFilterMode potom na chybe Resume Next ActiveSheet.ShowAllData On Error GoTo 0 End If End Sub 

Poznámka

Vďaka rizvisa1 za tento tip na fóre.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy