Forum > Software > Excel - wyszukiwanie danych po kilku arkuszach

Strona 1 z 1 1
skocz

Jur@s

  • Jur@s
  • wiadomość Użytkownik

  • 308 wypowiedzi

Wysłane 2012-07-03 21:11

Witam!!

Tak jak w temacie, mam plik excela z 20 arkuszami, gdzie znajdują się różne osoby. Co niektóre osoby powtarzają się w kilku arkuszach. Zależało by mi żeby 'wyszukiwanie' przeszukało wszystkie arkusze i wyświetlało po nazwisku wpisana osobe (nawet jak się powtarza to kilkukrotnie). Znalazłem na necie gotowy skrypt, lecz przeszukuje on tylko na jednym arkuszu. Kombinuje dopisując kolejne arkusze, lecz ciągle 'wyszukiwanie' nie bierze ich pod uwagę.....

jeżeli ktoś z Was miał by pomysł jak dopisać kolejne arkusze był bym wdzięczny za pomoc ;)

Sub Szukaj_Click()
Dim RngS As Range
Dim RngC As Range
Dim RngCrit As Range

Set RngS = ThisWorkbook.Worksheets("Dane").Range("A2").CurrentRegion
Set RngCrit = ThisWorkbook.Worksheets("Formularz").Range("A1").CurrentRegion
Set RngC = ThisWorkbook.Worksheets("Formularz").Range("A8")

Application.ScreenUpdating = False

'czyść wyniki po poprzednim filtrowaniu
RngC.CurrentRegion.Offset(1).Clear
RngC.Parent.UsedRange

'filtruj w arkuszu Dane
RngS.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:= _
RngCrit, _
Unique:=False

'interesuje nas obszar tylko 7. pierwszych kolumn w arkuszu Dane
'bez nagłówka tabeli
Set RngS = RngS.Offset(1).Resize(RngS.Rows.Count - 1, 7)

On Error Resume Next
'kopiuj wyniki filtrowania do arkusza Formularz
RngS.SpecialCells(xlCellTypeVisible).Copy RngC
'jeśli wynikiem filtrowania będzie więcej jak 8.192 obszarów nieciągłych
'lub nie znalezione zostaną wyniki - dojdzie do błędu - obsłużony
If Err.Number <> 0 Then
MsgBox "Nie znaleziono wyników!", vbExclamation, "Filtrowanie"
End If

'usuń filtr w arkuszu Dane
RngS.Parent.ShowAllData
On Error GoTo 0

RngC.Select
Application.ScreenUpdating = True

Set RngS = Nothing
Set RngCrit = Nothing
Set RngC = Nothing

End Sub
\"\cfaniak\" \"\cfaniak\" \"\cfaniak\" \"\cfaniak\"

"MESS WITH THE BEST, DIE LIKE THE REST"

Natan

Wysłane 2012-07-03 21:34

to zasadniczo powinno byc proste, tylko, ze nie do konca rozumiem na czym polega ma polegac ten search, co ma zwrocic i w jakiej postaci? w ktorym miejscu w tych wszystkich arkuszach dana osoba sie znajduje? liste wszystkich osob z akrkuszy (bez powtorzen)? jakies zestawienie danych przypisanych do danej osoby?

no, i ktory excel? pojawiaja sie problemy w kompatbilnoscia vba

Jur@s

  • Jur@s
  • wiadomość Użytkownik

  • 308 wypowiedzi

Wysłane 2012-07-03 21:51

osoba może znajdować się w kilku z tych 20 arkuszy i w wyszukiwarce wystarczyło by żeby podać nazwisko, a wynikiem był by wykaz arkuszy w których ta osoba się znajduje - na takiej zasadzie by działała ta wyszukiwarka. Gotowe formatki już mam (pobrałem je z powyższym kodem).

część kodu:

Set RngS = ThisWorkbook.Worksheets("Dane").Range("A2").CurrentRegion
Set RngCrit = ThisWorkbook.Worksheets("Formularz").Range("A1").CurrentRegion
Set RngC = ThisWorkbook.Worksheets("Formularz").Range("A8")

odwołuje się do arkusza Dane, utworzyłem Dane2 przerobiłem powyższy kod lecz wyszukiwarka zaczęła odwoływać się tylko do Dane2....

"MESS WITH THE BEST, DIE LIKE THE REST"

kowgli

  • kowgli
  • wiadomość Użytkownik

  • 4367 wypowiedzi

Wysłane 2012-07-06 12:00 , Edytowane 2012-07-06 12:01

Nie odwołuj się do arkuszy po nazwie tylko po indeksie, np. ThisWorkbook.Worksheets(1), ThisWorkbook.Worksheets(2) itd.
Oczywiście jeśli chcesz przejechać po wszystkich musisz użyć pętli. ThisWorkbook.Worksheets.Count, czy coś w tym stylu powinno Ci zwrócić ilość arkuszy. Numerowanie w VBS zaczyna się od 1.

Natan

Wysłane 2012-07-07 10:22

No wlasnie tu nie do konca lapie dlaczego nie uzyc po prostu wbudowanej opcji szukania.

Wystarczy rozwinac opcje przy szukaniu i wybrac, zeby szukal w calym skoroszycie.
Jesli dobrze Cie zrozumialem wynik takiego szukania to lista, ktora Cie interesuje.

Generalnie VBA byloby potrzebne przy tego rodzaju wyszukiwaniu w kilku plikach, ale jesli mowimy o jednym pliku z kilkoma akruszami, to powinno w zupelnosci wystarczyc. Jesli z jakis powodow to musi byc VBA, z powodzeniem mozesz uzyc excelowych funkcji z poziomu VBA.

Strona 1 z 1 1
skocz

Kto jest online: 0 użytkowników, 407 gości