< návrat zpět

MS Excel


Téma: Duplicitné hodnoty v jednom stĺpci rss

Zaslal/a 25.9.2019 12:39

Ahojte.

Potreboval by som pomôcť s makrom, ktoré by v stĺpci "A" overilo, či sa v ňom nachádzajú DUPLICITNÉ hodnoty.

V prípade, že sa nenájdu duplicitné hodnoty, tak aby vypísalo nejakú hlášku, že sa nič nenašlo.

V prípade , že sa nájdu, tak aby mi tie duplicitné hodnoty označilo v stĺpci "A" napríklad červeným písmom a aby mi ich samostatne vypísalo napríklad do stĺpca "B".

Šlo by to nejako ?
Nechcem použiť vzorce, potreboval by som makro ak sa dá.

Ďakujem za pomoc.

Příloha: zip44350_over-duplicitne-hodnoty.zip (9kB, staženo 31x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3   další »
#044389
avatar

Darbujan napsal/a:

Alindros: Bez urážky, ale pocit je takový, že vymýšlíte bejkárny a nemáte to vůbec promyšlené. Asi byste měl sdělit smysl takového počínání. Pak se možná dočkáte pravého řešení.


Potrebujem tieto bunky, alebo riadky týchto duplicitných hodnôt dočasne ochrániť pred možným zásahom až do doby, kým to nevyrieši niekto iný, kto to opraví tak, aby to nespôsobilo ešte väčšie problémy.

V zošite je veľmi veľa riadkov dát a keby niekto zmazal čo i len jeden riadok v zmysle že: "Však vymažem riadok a bude to OK", tak je to problém.

Zároveň zvyšné riadky a bunky musia zostať v odoknutom stave, aby boli editovateľné.

Áno, môžem vytvoriť podmienku na zvýraznenie duplicitných hodnôt už pri zápise nových dát, ale so súbormi pracuje veľa ľudí a tí sa menia.
Dvaja ľudia môžu vedieť, že to zvýraznenie znamená duplicitný záznam, ale už tretí to nemusí vedieť, lebo ho s tým nikto neoboznámil.

No a potom môže nastať situácia, že ten tretí človek bude chcieť spraviť ďalší krok, ten nebude fungovať, lebo sa v dátach nachádzajú duplicitné hodnoty a nebude vedieť čo s tým, tak sa to pokúsi vyriešiť možno práve tým že vymaže celý riadok, alebo spraví niečo iné čím to celé pokazí.

To je asi celé počínanie.

Priložený súbor je iba nástrojom, aby som zistil a pochopil ako to funguje a potom si to prispôsobil tomu čo potrebujem.citovat
#044391
avatar
Dobře, zkusme se nejdřív držet toho, že lepší je prevence než následné řešení. Co zkusit tohle:

https://proexcel.cz/overeni-typu-jednou-dost/

Nevím, jak se to bude chovat na velkém množství dat, ale...

I kdyby stráž mělo držet makro: Ve sloupci A (pouze v něm budou povolené buňky. Událost Worksheet_Change zkontrolujte, jestli po přidání hodnot nedošlo k vzniku duplicit. Pokud ano, vymaže je / označí / zařve, .... Pokud ne, odemkne další buňky pro záznam (řádek).citovat
#044397
avatar

Darbujan napsal/a:

Dobře, zkusme se nejdřív držet toho, že lepší je prevence než následné řešení. Co zkusit tohle:

https://proexcel.cz/overeni-typu-jednou-dost/

Nevím, jak se to bude chovat na velkém množství dat, ale...

I kdyby stráž mělo držet makro: Ve sloupci A (pouze v něm budou povolené buňky. Událost Worksheet_Change zkontrolujte, jestli po přidání hodnot nedošlo k vzniku duplicit. Pokud ano, vymaže je / označí / zařve, .... Pokud ne, odemkne další buňky pro záznam (řádek).


Ďakujem veľmi pekne.
Je to zaujímavá vec, musím si to poriadne pozrieť či je to vhodné pre to čo potrebujem.

Ešte raz ďakujem.citovat
#046106
Lugr
Dobrý den elninoslov,

snažím se aplikovat Vaše super makro do mé tabulky, ale nedaří se mi to. Možná je to tím, že jsou mezi daty mezery.
Příloha: zip46106_duplicity.zip (423kB, staženo 16x)
citovat
#046116
avatar
Tak jsem zkoušel najít jedinečné hodnoty ze sloupce :

Private Function GetUniqueColumnValues(aColumn As Range) As Variant
On Error Resume Next
Dim al As Object: Set al = CreateObject("System.Collections.ArrayList")
On Error GoTo 0
If al Is Nothing Then
With aColumn
GetUniqueColumnValues = Filter(.Parent.Evaluate(Replace( _
"Transpose(If(CountIf(Offset({0},,,Row(1:" & _
.Rows.Count & ")),{0})=1,{0}))", "{0}", "'" & _
.Parent.Name & "'!" & .Address(False, False))), False, False)
End With
Else
Dim rc As Range
For Each rc In aColumn
If al.IndexOf(rc.value, 0) < 0 Then
al.Add rc.value
End If
Next rc
GetUniqueColumnValues = al.ToArray()
End If
End Function


Pokud se povede inicializovat array list, tak ho použije, ale můžete si poupravit a zkusit oba způsoby, mě to takhle přišlo rychlejší. Ohledně toho barvení lze použít funkci CountIf a vypsání stačí projít vrácené jedinečné hodnoty, kde bude mí více výskytů než jeden. Funkce WorksheetFunction.CountIf lze případně použít i z makra, nejen ve vzorci.citovat
#046120
Lugr
Děkuji, ale vůbec tomu nerozumím.4citovat
#046126
avatar
Děkuji, ale vůbec tomu nerozumím.

Zdravím lugr, jsou to vlastně dvě varianty, první vyfiltruje jen hodnoty, kde je countif roven 1 a druhá plní arraylist hodnotami, které ještě neobsahuje. Cílem obou variant je získat jedinečné hodnoty.

V prvním sloupci A1 je záhlaví a A2:A7 nějaká data, např. : a,f,b,c,e,f
C1 je záhlaví a od C2 chci vypsat jedinečné hodnoty a třeba obarvit, které jsou jednou a které ne.

Sub Priklad()
Dim rColSrc As Range: Set rColSrc = Range("A2:A7")
Dim arr: arr = GetUniqueColumnValues(rColSrc)
'vypsat vracene pole od C2 dolu
Range("C2").Resize(UBound(arr) + 1, 1).Value = Application.Transpose(arr)
'projit pole a obarvit jedinecne zelene a duplicitni cervene
Dim i As Integer, res
For i = LBound(arr) To UBound(arr)
With Application.WorksheetFunction
Range("C2").Offset(i).Interior.Color = IIf(.CountIf(rColSrc, arr(i)) > 1, vbRed, vbGreen)
End With
Next
End Sub


Pokud přidáte al.Sort před řádek GetUniqueColumnValues = al.ToArray(), tak vrátí pole i seřazené.

Můžete si dle potřeby předělat, podmínky otočit a vracet rovnou jen nejedinečné ..

Nebo lze vše v jednom for each a při procházení rovnou vypisovat hodnoty a barvit dle countif...

Má původní potřeba byla zjistit jedinečné hodnoty ze sloupce bez prázdných buněk. Pokud máte někdo něco universálního nebo používáte jiný způsob?citovat
#046130
Lugr
Děkuju, ale já bohužel nejsem schopný to zprovoznit. Nepotřebuji barevně rozlišit duplicitní hodnoty. Potřeboval jsem "pouze" vypsat seznam hodnot které se vyskytují ve sloupci H.

Přesto děkuji.citovat
#046131
elninoslov

lugr napsal/a:

Dobrý den elninoslov,

snažím se aplikovat Vaše super makro do mé tabulky, ale nedaří se mi to. Možná je to tím, že jsou mezi daty mezery.Příloha: 46106_duplicity.zip (423kB, staženo 5x)

Tu máte 2 rôzne varianty. Všetky duplicity, a aj jedinečné duplicity.
Příloha: zip46131_duplicity-bez-prazdnych.zip (430kB, staženo 20x)
citovat
#046132
Lugr
To je ono 9 , moc děkuji elninoslov

Šlo by prosím ještě, aby při výpisu jedinečných duplicit přidal i hodnoty, které se ve sloupci H vyskytují pouze jednou?citovat

Strana:  « předchozí  1 2 3   další »

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