Delila_1 Creative Commons License 2011.03.11 0 0 14344

Leírás a makróhoz.

 

Az sz=Worksheets.Count - 1 sorban az sz változóban megadtam a füzet lapjai száma mínusz 1 értéket (az utolsó lap az összegző oldal, azt nem vesszük bele).

 

A For lap...Next ciklus végigsétál az egyes lapokon. Rááll az aktuális lapra, ott is az A1 cellára. Kijelöli A1-től az alsó, értéket tartalmazó sorig [Range(Selection, Selection.End(xlDown)).Select], másolja, és a füzet utolsó lapjára, ott is az A oszlopának sor-adik cellájára beilleszti

[Selection.Copy Sheets(Worksheets.Count).Range("A" & sor)].

A sor változó az első esetben 1, ezt a ciklus előtt adtam meg. Beillesztés után a sor változó értékét a

sor = Sheets(Worksheets.Count).Range("A60000").End(xlUp).Row + 1-gyel meváltoztatom az összesítő lap első üres sorának értékére, hogy a következő lap értékeit az előzőek alá tegye be.

 

A ciklus végén az összesítőn minden lap A oszlopának az adata szerepel, egyes értékek többször is.

 

A következő 'egységgel' Ráállok az utolsó lapra: Sheets(Worksheets.Count).Select, és rendezem az adatokat emelkedő sorrendbe.

 

Kikeresem az alsó sort:  usor = Range("A1").End(xlDown).Row.

A B1:Busor tartományba beírom a DARABTELI (COUNTIF) függvényt

[Range("B1:B" & usor) = "=countif(A:A,A1)"], ami az A oszlop cellái mellé beírja, melyik értékből hány darab van.

 

Másolom, és értékként saját magára beillesztem a B oszlop képleteit. Erre azért van szükség, mert mikor a következő For sor...Next ciklusban kitöröltetem az azonos értékeket, a függvény mindenhova 1-et írna, ha még mindig az szerepelne a cellákban.


A makró elején és végén lévő Application.ScreenUpdating a képernyőfrissítés letiltását, ill. engedélyezését határozza meg, arra jó, hogy egyrész ne villogjon a képernyő a lapok váltásakor, másrészt lerövidíti a futásidőt.

Előzmény: yxc432 (14341)