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

1090

    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. Immu otti pataan

      Olen pettynyt, hänen piti viedä Stagalaa kuin litran mittaa - mutta kuinka kävikään? Voi hemmetti sentään.... Ääääääh!
      Kotimaiset julkkisjuorut
      212
      2847
    2. Näetkö feminismin uhkana

      Vai mahdollisuutena kun deittailet naisia? Mitä miehet mieltä feminismistä?
      Ikävä
      207
      1251
    3. Tykkäätkö halaamisesta?

      Minä en. Tänään tuttava, jolle olen maininnut että en pidä halaamisesta, yritti halata minua ja olen vieläkin ihan raivo
      Maailman menoa
      116
      1221
    4. Malmin tapaus on järkyttävä

      Kolme ulkomaalaistaustaista miestä raiskasi nuoren tytön tavalla, jota ei meinaa uskoa todeksi. Mikä voisi olla oikeampi
      Maahanmuutto
      340
      1109
    5. Miksi kaivata miestä

      jolla ei edes muna toimi?
      Ikävä
      111
      1033
    6. Hinduilu on suurta eksytystä

      tekosyvällinen tarina uppoaa moneen. Harhautusta todellisen Jumalan yhteydestä. Kuka haluaisi nähdä sielunvaelluksessa
      Hindulaisuus
      401
      984
    7. Mitä haluaisit kysyä

      Kaivatultasi?
      Ikävä
      86
      980
    8. Mitkä asiat teidän elämässänne on

      Tällä hetkellä parasta?
      Ikävä
      66
      904
    9. Oot nainen kaunis

      muista hymyillä jatkossakin.
      Ikävä
      46
      884
    10. Kyllä me vaan

      Tykätään toisistamme ❤️ siinä ei ole mitään väärää kenellekään
      Ikävä
      53
      871
    Aihe