< návrat zpět

MS Excel


Téma: Range Removeduplicates dělá chybně rss

Zaslal/a 5.2.2015 10:43

Ahojte,

neumím přijít na chybu. Mám pole hodnot např. A1:AB25 a pomocí VBA - removeduplicates se snažím smazat řádky, které obsahují duplicitní hodnoty ve sloupcích A-C.

PosledniRadek = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:AB" & PosledniRadek).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes

Jede to, ale nedělá mi to co má (po removeduplicates mi v seznamu vznikne "díra") - viz příloha - soubor Celkem.xlsm - ve Thisworkbook - úplně na konci.

Vysvětlení chodu prog:
1) Soubor "Celkem" tahá data z souborů umístěných v adr: Tendr
2) Jednotlivé soubory/data v adr:Tendr se časem mění, a proto je "Celkem" vždy při otevření smaže a načte znova.
3) Vyjímku tvoří Data u nichž došlo v "Celkem" k doplnění (uzavření smlouvy, Fakturace). Tyto data nejsou při znovuotevření "Celkem" smazány, ale jsou opětovně doplněny daty z "Tendr", takže se vyskytují duplicitně.
4) Aby se nyvyskytovaly 2x potřebuji očistit výše zmíněným, ale provádí krkolomně - pokud "Celkem" obsahuje souvislou oblast záznamů - sloupec SOD - označenou "x", tak po removeduplicates vznikají v seznamu prázdné díry. Přitom sloupec SOD by dle mne neměl být vůbec přes removeduplicates dotčen (není v array).

Jedná se o poslední řádek kódu. Takže při krokování, až po tento řádek vidím, že data jsou kompaktní. Neumím se pohnout.

Děkuji za radu.

Příloha: rar23469_firma.rar (78kB, staženo 43x)
Zaslat odpověď >

icon #023476
Poki
Otazka je, jestli zmineny kod nedela, co ma, nebo nekdo nevytvoril spravny kod - ja bych se proklonil k te druhe variante.

.RemoveDuplicates totiz s vice zadanymi sloupci pracuje tak, ze za duplicity bere pouzy ty radky, ktere obsahuji ve vsech sledovanych sloupcich stejne hodnoty, jako jiny radek.

Ve tomto pripade se na duplicity sleduji sloupce A,B,C.
Jelikoz ve sloupci B jsou same unikatni hodnoty, nemuze nikdy dojit k duplicite v columns:=array(1,2,3)

Otazkou tedy zustava - co ma byt cil...?citovat
#023477
avatar
Sloupec A: Zakázka
Sloupec B: Oddíl
Sloupec C: Firma
Jednomu oddílu v jedné zakázce může být přiřazeno více firem. Takže je opravdu zapotřebí sledovat A,B,C.
Kód snad dělá co má ... až na ten removeduplicates.
Pokud v Debugu použiju Run to cursor, tak až po removeduplicates (což je poslední řádek programu) data vypadají tak, jak mají vypadat. Takže nevím. 7citovat
icon #023480
Poki
Tak ja to napisu jeste jednou - podle me .RemoveDuplicates dela presne to, co ma.

V prvni casti kodu se odstrani vsechny radky, ktere maji prazdny sloupec F (SOD), protoze fakturace je vzdy nulova.

A protoze ve zbylych radcich neni zadna duplicita, neni, co by zde uvedeny prikaz mel udelat (a tedy neudela nic).
Jak uz jsem psal, pokud hledate duplicity, musely by existovat radky, ktere budou mit totozne hodnoty ve vsech trech sledovanych sloupcich!citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje