vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 14 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

prośba o pomoc z funkcją match (potrzebna opcja szukanie od wcześniej znalezionego adresu)


otwartyotwarty rozpoczął: entrelec postów: 4



napisał: Trebor
postów: 1209


umieszczony:
15 maja 2011
20:30

edytowany:
15 maja 2011
20:32

  
Słowo kluczowe to Row
.Cells(j, licznik) = .Cells(i, 1).Row


lub jeszcze krócej w tym przypadku
.Cells(j, licznik) = i


Hej
napisał: entrelec
postów: 2


umieszczony:
15 maja 2011
20:17

  
Wielkie dzięki działa bosko. Trochę pozmieniałem na swoje potrzeby.
Mam jeszcze jedno pytanko.

Funkcja address zwraca pełen adres komórki np. B12
A jak to przerobic by zwracany był tylko numer wiersza np. 12

Jeszcze raz dzięki
Pozdrawiam
Entrelec
napisał: Trebor
postów: 1209


umieszczony:
15 maja 2011
07:19

  
Używasz funkcji arkuszowych w VBA co w tym przypadku nie jest zbyt optymalnym rozwiązaniem. Sugeruję oprzeć się tylko na VBA.
Sub adr_umowa()
Dim i As Long, j As Long, licznik As Integer, unikaty As New Collection
With Sheets("Arkusz1")

    On Error Resume Next
    For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
    unikaty.Add .Cells(i, 1), CStr(.Cells(i, 1))
    Next i
    On Error GoTo 0
'przepisanie unikatów do arkusza
For i = 1 To unikaty.Count
.Cells(i + 1, 2) = unikaty(i)
Next i
.Cells(i + 1, 2) = "Koniec"
'ponownie przebiegamy po nr umów aby wyszukać adresy
 For j = 2 To unikaty.Count + 1
 licznik = 2
 For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row

    If .Cells(j, 2) = .Cells(i, 1) Then
    licznik = licznik + 1
    .Cells(j, licznik) = .Cells(i, 1).Address(0, 0) ' tu można wstawić np hiperłącze
    End If

 Next i
 Next j

End With
End Sub


Wykonanie kodu można znacznie przyśpieszyć przy dość dużej ilości danych, ale stanie się on wtedy trochę bardziej skomplikowany.
Jeśli chcesz zrobić to formułami to możemy do tego wrócić, ale proponuję bez VBA (czyste formuły jednak bez tablicowych pewnie się nie obędzie)
napisał: entrelec
postów: 2


umieszczony:
14 maja 2011
22:25

  
Witam
Zwracam się z prośbą o pomoc z funkcją match. Walczę z nią dość długo i nic mi nie idzie. Opiszę po krótce problem.
Mam zakres ("A1:A100") w którym są numery umów
Zrobiłem sobie dynamiczny zakres unikatowych numerów umów ("B1"Bi") gdzie Bi jest ostatnią z niepowtarzających się umów w zakresie( "A1:A100")
np. jeżeli było tylko 5-pięć różńych umów w zakresie ("A1:A100") to zakres unikatowych umów wynosi ("B1"B5").
Zrobiłem sobie zliczanie powtórzeń wystąpienia danej umowy(umowy mogą się powtarzać w zakresie ("A1:A100")) tak by wiedzieć ile razy wyszukiwać adres/pozycję danej umowy.
Zrobiłem sobie wyszukiwanie adresu w zakresie ("A1:A100") dla danej unikatowej umowy z zakresu dynamicznego ("B1"Bi").

I teraz mam problem bo funkcja match wyszukuje mi adres tylko pierwszego wystąpienia dowolnej umowy z zakresu ("B1"Bi") w przeszukiwanym zakresie ("A1:A100").
Jak zrobić by funkcja Application.WorksheetFunction.Match wyszukiwała mi adresy/pozycje wszystkich wystąpień unikatowego numeru umowy bo zwraca mi tylko adres pierwszego wystąpienia.

Pozdrawiam
Entrelec


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z