Duplikaattien poisto kokonaan

exceleeert

Minulla on kaksi taulukkoa joissa toisessa on noin 50000 riviä ja toisessa noin 10000 riviä ja minun pitäisi saada poistettua isommasta taulukosta kaikki rivit joiden 3. sarakkeessa on sama tieto kuin pienemmän taulukon 3. sarakkeessa.

Kokeilin aikaisemmin yhdistää taulukot ja sain tällöin duplikaatit lajiteltua hajanaisesti peräjälkeen mutta tästäkään ei ollut apua koska en saanut kaikkia duplikaatteja allekkain jotta olisin voinut poistaa ne helposti.

Korostan vielä että en ole siis poistamassa ainoastaan duplikaattirivejä vaan kaikki rivit missä on 3. sarakkeessa samat tiedot pitäisi poistaa kokonaan.

Kiitos avusta jo etukäteen!

5

342

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kaavan.avulla

      Minä tekisin tuon siten, että ensin tekisin apusarakkeen isompaan, johon tulee rivinumerot 1,2...50000. Tuo sen vuoksi, että alkuperäinen järjestys saadaan säilytettyä pienen pyörittelyn jälkeen.

      Sitten hakisin isomman taulukon yhteen sarakkeeseen jokaista isomman taulukon kolmossarakkeen arvoa pienemmän taulukon kolmossarakkeista VLOOKUP-funktiolla, esim =VLOOKUP(C1;pikkutaulu.C:C;1;0). Tämä funktio siis isomman taulukon omaan sarakkeen ensimmäiselle (hakuarvon sisältävälle, tässä tapauksessa C1) riville.

      Tuo funktio palauttaa ko.arvon, jos se löytyy pienemmästä taulukosta, jos taas ei, niin palauttaa #N/A.

      Sen jälkeen järjestetään isompi taulukko VLOOKUP-funktion sarakkeen mukaiseen järjestykseen. Ei duplikaatit rivit järjestyvät #N/A-arvon vuoksi peräkkäin. Sen jälkeen voi poistaa helposti ne muut rivit, jotka ovat taulukossa peräkkäisillä riveillä.

      Lopuksi järjestetään isompi taulu uudelleen alkuperäiset rivinumerot sisältävän apusarakkeen mukaiseen järjestykseen ja viimeistellään taulukko poistamalla se ja VLOOKUP-kaavan sisältävä sarake.

      • kaavan.avulla

        Ja tuo VLOOKUP-kaava toki siis monistetaan isomman taulukon jokaiselle riville. Sen ensimmäinen parametri C1 muuttuu vaan rivin mukaan, eli toisella rivillä se olisi C2 jne.


    • moduuliin...
      Sub EtsiJaPoista()
      Dim vika As Long
      Dim solu As Range
      Dim cainoa As New Collection
      Dim i As Long
      Dim uList() As Variant
      'muuta taulukon nimi oikeaksi
      Worksheets("Sheet2").Activate
      ' muuta sarake oikeaksi
      vika = Range("C" & Rows.Count).End(xlUp).Row
      Application.Volatile
      On Error Resume Next
      ' muuta sarake oikeaksi
      For Each solu In Range("C1:C" & vika)
      If solu.Formula <> "" Then
      cainoa.Add solu.Value, CStr(solu.Value)
      End If
      Next solu
      If cainoa.Count > 0 Then
      ReDim uList(1 To cainoa.Count)
      For i = 1 To cainoa.Count
      uList(i) = cainoa(i)
      Next i

      End If
      'muuta nimi oikeaksi
      Worksheets("Sheet1").Activate
      For i = 1 To UBound(uList)
      ' muuta sarake oikeaksi
      EtsiJaSiirrä(uList(i), Range("C:C")).EntireRow.Delete
      Next
      On Error GoTo 0
      End Sub

      Function EtsiJaSiirrä(Hakuehto As Variant, Hakualue As Range) As Range
      Dim solu As Range
      Dim EkaOsoite As String
      Worksheets("Sheet1").Activate
      On Error Resume Next
      With Hakualue
      Set solu = .Find( _
      What:=Hakuehto, _
      LookIn:=xlValues, _
      LookAt:=xlWhole, _
      SearchOrder:=xlByRows, _
      SearchDirection:=xlNext, _
      MatchCase:=False, _
      SearchFormat:=False)
      If Not solu Is Nothing Then
      Set EtsiJaSiirrä = solu
      EkaOsoite = solu.Address
      Do
      Set EtsiJaSiirrä = Union(EtsiJaSiirrä, solu)
      Set solu = .FindNext(solu)
      Loop While Not solu Is Nothing And solu.Address <> EkaOsoite
      End If
      End With

      End Function


      Keep EXCELing
      @Kunde

      • kaavan.avulla

        Näyttäisi tämä makrokin toimivan. Sheet1 on siis se "isompi" mistä rivit poistetaan, ja Sheet2 se toinen joka jää ennalleen.


      • juuri näin


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Purra sössi kaiken 2 vuodessa, itkee nyt Marinin perään

      Nyt on taas sama vanha itkuvirsi, kun ei omat taidot riittänee. Kaikki on taas muiden syytä. No miten sen "Tunnin juna"
      Maailman menoa
      54
      8774
    2. Ikuiset kaipaajat

      Miksette vaan mene sen kaipauksen kohteen luokse ja puhu sille suoraan? Mitä järkeä on kaipailla jotain puolituttua vuo
      Ikävä
      151
      5340
    3. Nyt se on selvitetty: Sanna Marinin hallitus lisäsi menoja 41 miljardilla

      ”vasemmistohallitus oli katastrofaalisen huono”, sanoo kokoomus. Sanna Marinin (sd.) hallituksen tekemät menolisäykset
      Maailman menoa
      120
      4895
    4. Orpon hallitus runnoi Tunnin junan ilman tarvetta

      Näinkö valtiontaloutta hoidetaan? Siis asiantuntijoidenkin aikoja sitten kannattamattomaksi laskema Tunnin juna tehdään
      Maailman menoa
      8
      3822
    5. Riikka ottaa miljardi euroa EU:n yhteisvelkaa Suomelle

      Niin kääntyi irvipersun takki taas, vaikka vaalilupauksissa oli ettei yhteisvelkaa Suomi enää koskaan ota. No nyt otti m
      Maailman menoa
      83
      3426
    6. Lindtman ylivoimainen suosikki pääministeriksi

      Lindtmania kannattaa pääministeriksi peräti 50 prosenttia useampi kuin toiseksi suosituinta Kaikkosta. https://www.ilta
      Maailman menoa
      53
      3339
    7. Veronmaksajat kustantavat yrittäjien eläkkeitä jo yli 500 miljoonalla

      Suomalaista yrittäjää ei kommunistista erota. Aktiivisen "yrittämisen" maksattaa yritystukina yhteiskunnalla, ja vieläpä
      Yrittäjyys
      35
      2682
    8. Sanna Marin - Maailman paras talousasiantuntija?

      PersKeKoa pukkaa? https://www.hs.fi/politiikka/art-2000011636623.html
      Maailman menoa
      39
      2573
    9. En tiedä ymmärrätkö

      Kuinka paljon merkitset mulle. Näet minut minuna etkä silti käännä selkääsi. Tökit jatkuvasti kepillä jäätä ja menit ehk
      Ikävä
      10
      2511
    10. Kenenkä halli se on tulessa nelostiellä

      11 yksikköä paikalla
      Pyhäjärvi
      24
      1707
    Aihe