Rivin poisto makrolla

juminki

Eli minulla on tilanne missä eri valintaruudut tulostaa soluihin C10-C20 joko TOSI tai EPÄTOSI. Nyt tartteisin makron mikä poistaisi rivit missä lukee EPÄTOSI kokonaan.

Tietty tätä ennen makro kopioi tiedot toiseen taulukkoon ettei mitään alkuperäistä menetetä, mutta tämän olen jo tehnyt. Nyt pitäisi saada vielä tuo lista siistittyä ylimääräisistä riveistä.

7

1159

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • juminki

      Sub CommandButton1_Click()
      Range("C1:C20000").Select
      For Each cell In Selection
      If cell.Value = "*EPÄTOSI*" Then
      cell.EntireRow.Delete
      End If
      Next cell
      Range("a1").Select
      End Sub

      mutta jostain syystä tuo ei toiminut, mikähän siinä meni väärin?

      • juhakorkeapudas

        Excel 2007:lla testattuna koodi toimii.
        Huomaa, että kirjainkokoa ei vertailla.

        haetko tekstiä EPÄTOSI vai *EPÄTOSI*?

        Tuliko virheilmoitusta?


      • ...

        Sub CommandButton1_Click()

        For i=20000 to 1 step -1
        if Cells(i,3) = "*EPÄTOSI*" Then Cells(i,3).Entirerow.Delete
        Next

        End Sub


      • juminki
        juhakorkeapudas kirjoitti:

        Excel 2007:lla testattuna koodi toimii.
        Huomaa, että kirjainkokoa ei vertailla.

        haetko tekstiä EPÄTOSI vai *EPÄTOSI*?

        Tuliko virheilmoitusta?

        Eli tarkoitus oli hakea tekstiä EPÄTOSI, mutta vaikka otinkin tähdet pois niin rivit ei silti poistuneet. Mitään virheilmoitusta ei tule.


      • ...
        juminki kirjoitti:

        Eli tarkoitus oli hakea tekstiä EPÄTOSI, mutta vaikka otinkin tähdet pois niin rivit ei silti poistuneet. Mitään virheilmoitusta ei tule.

        If cell.Value = false Then cell.EntireRow.Delete


      • vika on siinä kun rivejä poistetaan ne pitää poistaa alkaen lopustapäin.
        Olen aikaisemmin postannut FIND funktion joka palauttaa alueen ja on tässäkin tapauksessa parhain ja nopein vaihtoehto. Yleensä pitäisi pyrkiä käyttämään excelin omia funktioita. For next loopit ovat niitä "tehottomimpia", mutta toimivia kuitenkin. Kysyjän tapauksessa nopeus ei varmaankaan nöyttele suurtakaan osuutta. Tossa nyt kuitenkin FIND makro ja sillähän voit tehdä sen tallennuksenkin yhdellä koodirillä toiseen taulukkoon...

        Sub CommandButton1_Click()
        EtsiAlue("EPÄTOSI", Columns("C"), xlFormulas, xlWhole).EntireRow.Copy Range("Sheet2!C65536").End(xlUp).Offset(1, 0).EntireRow
        EtsiAlue("EPÄTOSI", Columns("C"), MatchCase:=True).EntireRow.Delete
        End Sub

        Function EtsiAlue(Haettava As Variant, _
        Hakualue As Range, _
        Optional LookIn As Variant, _
        Optional LookAt As Variant, _
        Optional MatchCase As Boolean) As Range


        Dim Alue As Range
        Dim Ekaosoite As String
        If IsMissing(LookIn) Then LookIn = xlValues
        If IsMissing(LookAt) Then LookAt = xlPart
        If IsMissing(MatchCase) Then MatchCase = False

        With Hakualue
        Set Alue = .Find( _
        What:=Haettava, _
        LookIn:=LookIn, _
        LookAt:=LookAt, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=MatchCase, _
        SearchFormat:=False)
        If Not Alue Is Nothing Then
        Set EtsiAlue = Alue
        Ekaosoite = Alue.Address
        Do
        Set EtsiAlue = Union(EtsiAlue, Alue)
        Set Alue = .FindNext(Alue)
        Loop While Not Alue Is Nothing And Alue.Address Ekaosoite
        End If
        End With
        End Function

        Keep Excelling @Kunde


      • yypp
        kunde kirjoitti:

        vika on siinä kun rivejä poistetaan ne pitää poistaa alkaen lopustapäin.
        Olen aikaisemmin postannut FIND funktion joka palauttaa alueen ja on tässäkin tapauksessa parhain ja nopein vaihtoehto. Yleensä pitäisi pyrkiä käyttämään excelin omia funktioita. For next loopit ovat niitä "tehottomimpia", mutta toimivia kuitenkin. Kysyjän tapauksessa nopeus ei varmaankaan nöyttele suurtakaan osuutta. Tossa nyt kuitenkin FIND makro ja sillähän voit tehdä sen tallennuksenkin yhdellä koodirillä toiseen taulukkoon...

        Sub CommandButton1_Click()
        EtsiAlue("EPÄTOSI", Columns("C"), xlFormulas, xlWhole).EntireRow.Copy Range("Sheet2!C65536").End(xlUp).Offset(1, 0).EntireRow
        EtsiAlue("EPÄTOSI", Columns("C"), MatchCase:=True).EntireRow.Delete
        End Sub

        Function EtsiAlue(Haettava As Variant, _
        Hakualue As Range, _
        Optional LookIn As Variant, _
        Optional LookAt As Variant, _
        Optional MatchCase As Boolean) As Range


        Dim Alue As Range
        Dim Ekaosoite As String
        If IsMissing(LookIn) Then LookIn = xlValues
        If IsMissing(LookAt) Then LookAt = xlPart
        If IsMissing(MatchCase) Then MatchCase = False

        With Hakualue
        Set Alue = .Find( _
        What:=Haettava, _
        LookIn:=LookIn, _
        LookAt:=LookAt, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=MatchCase, _
        SearchFormat:=False)
        If Not Alue Is Nothing Then
        Set EtsiAlue = Alue
        Ekaosoite = Alue.Address
        Do
        Set EtsiAlue = Union(EtsiAlue, Alue)
        Set Alue = .FindNext(Alue)
        Loop While Not Alue Is Nothing And Alue.Address Ekaosoite
        End If
        End With
        End Function

        Keep Excelling @Kunde

        Minulla on vastaavanlainen kysymys, mutta nyt olisi tarkoitus lisätä uusi rivi. Eli minulla on lista nimiä aakkosjärjestyksessä, ja kukin nimi voi olla allekkain monta kertaa. Haluaisin tyhjän rivin aina niille kohdille, joissa nimi vaihtuu. Tyyliin:

        Matti
        Matti
        Matti
        Pekka
        Pekka

        muuttuisi muotoon:
        Matti
        Matti
        Matti

        Pekka
        Pekka


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

    Luetuimmat keskustelut

    1. Mikä teidän jutussa on ongelmana?

      Missä meni pieleen?
      Ikävä
      138
      1309
    2. Kauhavan häiriköijistä

      Juttua Iltalehdessä. Pakko sanoa että noi nuoret on kyllä ihan pimeitä. Putkin peltoja jupksevat kiusaamaan kun ei tietä
      Kauhava
      38
      859
    3. Haluan sinut, kuuletko minua.

      Haluan sinut. Toivon, että voisimme olla yhdessä. Mietin pystynkö täyttämään toiveesi, olemaan arvoisesi. Voisitko saad
      Ikävä
      29
      607
    4. Tehdäänkö tänään toiveista totta?

      Poikkea tänä illasta siinä lähellä ja annetaan silmien puhua ja sen jälkeen puhu sinä lopulta mitä ajattelet..
      Ikävä
      46
      597
    5. Auto ajoi päälle?

      Ja pakeni luin iltapäivälehdestä. ! Ken on kuski joka tuollee teki
      Kuusankoski
      14
      580
    6. Miksi Lapset kiusaa yöllä

      Miksi Lapset kiusaa yöllä ihmisiä? Miksi vanhemmat antaa tämän tapahtua? Eikö ne huomaa ettei lapset ole kotona vai eivä
      Kauhava
      26
      548
    7. Ajatteletko ollenkaan minua

      Naiselle, jonka kanssa vahva tunne yhteydestä. Jota kipeästi kaipaan, mutta jota ei juuri näe. Onko siitä jo kolme vuott
      Ikävä
      30
      536
    8. Hän on tosi

      hyvännäköinen. Ei edes ryppyi oo. :D
      Ikävä
      24
      521
    9. Viimeinen lankafest

      Käykää viimeisessä lanka festissä. Ensivuonna sitä ei enää ole. Rahat on loppu. Harmi .
      Puolanka
      16
      492
    10. Sama ransetti taas!

      Keikkui tällä kertaa Honkavaaran tien varressa muutaman sadan metrin päässä Louhenkoskelta.. Otin rekisterin ylös ja ver
      Hyrynsalmi
      17
      483
    Aihe