Forum » Programiranje » Excel: izbris obeh podvojenih vrednosti
Excel: izbris obeh podvojenih vrednosti
shinko ::
Zdravo,
iz baze moram izbrisat vse podvojene vrednosti. Ne samo "duplikat" ampak tudi "original". V bazi so imena, priimki, telefonska, mail,... Na netu sem naletel na to kodo za makro:
Baza ima približno 5000 vnosov in računalnik melje že pol ure. A ve mogoče kdo če je ta koda ok, oz če še je kakšna druga varjanta prosim za nasvet.
LP
iz baze moram izbrisat vse podvojene vrednosti. Ne samo "duplikat" ampak tudi "original". V bazi so imena, priimki, telefonska, mail,... Na netu sem naletel na to kodo za makro:
Sub Delete_Duplicates() Dim r As Long Dim r2 As Long Dim CurrentVal As String Dim Unique As Boolean For r = 1 To Range("A65536").End(xlUp).Row CurrentVal = Range("A" & r).Value Unique = True For r2 = r + 1 To Range("A65536").End(xlUp).Row If Range("A" & r2).Value = CurrentVal Then Unique = False Range("A" & r2).EntireRow.Delete r2 = r2 - 1 End If Next r2 If Unique = False Then Range("A" & r).EntireRow.Delete r = r - 1 End If Next r End Sub
Baza ima približno 5000 vnosov in računalnik melje že pol ure. A ve mogoče kdo če je ta koda ok, oz če še je kakšna druga varjanta prosim za nasvet.
LP
shinko ::
Hvala, ampak to zal ni to. S tistim filtrom se pobrise samo duplikat, ne pa tudi original.
Jaz rabim iz tega:
1
2
2
3
4
4
to:
1
3
Lp
Jaz rabim iz tega:
1
2
2
3
4
4
to:
1
3
Lp
smetko ::
brez makrojev je to mogoče na sledeč način:
- predpostavka je da iščes podvojene vrednosti v stolpcu a.
- v neki prazni stolpec v 1.vrstico vpiši formulo =COUNTIF(A:A;A1).
- to skopiraj po celotni koloni.
- tu pa imaš dve možnosti in sicer filter ali pa sort po tem polju...
- predpostavka je da iščes podvojene vrednosti v stolpcu a.
- v neki prazni stolpec v 1.vrstico vpiši formulo =COUNTIF(A:A;A1).
- to skopiraj po celotni koloni.
- tu pa imaš dve možnosti in sicer filter ali pa sort po tem polju...
No comment
dvojka ::
Zdravo,
iz baze moram izbrisat vse podvojene vrednosti. Ne samo "duplikat" ampak tudi "original". V bazi so imena, priimki, telefonska, mail,... Na netu sem naletel na to kodo za makro:
Sub Delete_Duplicates()
Dim r As Long
Dim r2 As Long
Dim CurrentVal As String
Dim Unique As Boolean
For r = 1 To Range("A65536").End(xlUp).Row
CurrentVal = Range("A" & r).Value
Unique = True
For r2 = r + 1 To Range("A65536").End(xlUp).Row
If Range("A" & r2).Value = CurrentVal Then
Unique = False
Range("A" & r2).EntireRow.Delete
r2 = r2 - 1
End If
Next r2
If Unique = False Then
Range("A" & r).EntireRow.Delete
r = r - 1
End If
Next r
End Sub
Baza ima približno 5000 vnosov in računalnik melje že pol ure. A ve mogoče kdo če je ta koda ok, oz če še je kakšna druga varjanta prosim za nasvet.
LP
Tole kar si dal dela čisto lepo, vendar je časovno potratno. Za vsak row moraš pregledati n vrstic. V najslabšem primeru delaš 5000x5000 primerjav kar pa le nanese nekaj. Kar je predlagal smetko je ročna varianta, ki je hitrejša. V kolikor mora to biti makro imaš pa veliko možnosti za optimizacijo. Prva je že ta, da narediš sort podatkov in potem delaš drugo zanko samo do prve spremembe like:
For r2 = r + 1 To Range("A65536").End(xlUp).Row If Range("A" & r2).Value = CurrentVal Then Unique = False Range("A" & r2).EntireRow.Delete r2 = r2 - 1 Else Exit For End If Next r2
LP
Zgodovina sprememb…
- spremenil: dvojka ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | vba arrayOddelek: Programiranje | 920 (613) | Vazelin |
» | Excel: tiskanje po vrsticahOddelek: Pomoč in nasveti | 1100 (1013) | luksorzi |
» | Calc/excel delo s tabeloOddelek: Programiranje | 1451 (1218) | salabajs |
» | [excel]duplikatiOddelek: Programiranje | 1469 (1396) | baksuz |
» | [Excel] problem z makrojem, visual basic (strani: 1 2 )Oddelek: Programiranje | 5649 (5112) | steev |