Re: Excel i znajdowanie powtórzeń

Autor: TMK <tmk_usenet_at_epf.pl>
Data: Fri 30 Mar 2007 - 15:02:51 MET DST
Message-ID: <euj21i$72m$1@nemesis.news.tpi.pl>
Content-Type: text/plain; charset=ISO-8859-2; format=flowed

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, TMK
Received 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