pwil napisał(a):
>> menu dane-->filtr-->filtr zaawansowany
>> kopiuj w inne miejsce, tylko unikatowe rekordy
>>
>> w kolumnie obok wyniku użyć funkcji "licz.jeżeli", koniec.
>
> Nie koniec. Jest jeszcze druga połowa problemu :-)
to nie problem ;)
> "Czy jest jakiś sposób aby w arkuszu excela zawierającym kilkadziesiąt
> tys. rekordów opatrzonych numerami nie liczbowymi znaleźć te, które sie
> powtarzają, zliczyć je i _podać_ich_numery_?"
Można się bawić z wyszukiwaniem pionowym, adresem pośrednim etc.
> Moja wersja jest pewnie za to bardziej uniwersalna ;-)
Zamiast tego co podałem wcześniej, od razu dostaw kolumnę z formułką
"licz.jeżeli" i masz 3 kroki mniej niż podałeś ;P
>> ps. excel i kilkadziesiąt tysięcy wierszy? grrr... jakąś bazę sql lub
>> accessa polecam :)
>
> Przy obecnych wymaganiach samych systemów operacyjnych obróbka
> kilkudziesięciu tysięcy rekordów w Excelu to pestka ;-)
99% arkuszy których używam lub robię dla kogoś jest "oprogramowana" w
VBA. Powód prozaiczny, funkcje arkuszowe nie umożliwiają tego co można
zrobić za pomocą kodu, ale coś za coś - praca w excelu i VBA przy dużych
arkuszach nie zawsze jest przyjemna. Dlatego często wolę zaciągnąć dane
do accessa i ewentualnie wynik z powrotem umieścić w excelu.
ps. obecne wymagania systemów operacyjnych mają się nijak do możliwości
"biurkowych" komputerów w znacznej części polskich firm, znam jeszcze
wiele co siedzą do dziś w dosie i programach typu teta, subiekt :)
ps2. kiedyś, dawno, dawno temu dzióbnąłem jakąś wyszukiwarkę do
duplikatów - właśnie sprawdzałem, działa (szuka w kolumnie C) ale
cholernie wolno i nie mam najmniejszej ochoty na jej optymalizację :)
W każdym razie, potrzebna jest forma zawierająca listboxa, oczywiście
trzeba zmienić zakresy do konkretnych danych etc.
Sub dubel()
ActiveSheet.Columns("BB:BB").ClearContents
i = 1: J = 1
Do While ActiveSheet.Range("C" & i).Value <> ""
K = i + 1
Do While ActiveSheet.Range("C" & K).Value <> ""
If ActiveSheet.Range("C" & K).Value = ActiveSheet.Range("C" & i).Value Then
ActiveSheet.Range("BB" & J).Value = ActiveSheet.Range("C" & i).Value
J = J + 1
End If
K = K + 1
Loop
i = i + 1
Loop
UserForm1.ListBox1.RowSource = ""
For row = 1 To 60
UserForm1.ListBox1.AddItem ActiveSheet.Cells(row, 54)
Next row
UserForm1.Show
End Sub
-- Pozdrawiam, TMKReceived on Fri Mar 30 15:05:07 2007
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Fri 30 Mar 2007 - 15:51:25 MET DST