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

1038

    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. Kuvat! Dannyyn liitetty Helmi Loukasmäki, 22, on puhjennut naisena kukkaan - Some sekoaa: "Sä..."

      Ooo, kaunis aikuinen nainen Helmistä on kasvanut siinä yli 80-vuotiaan Dannyn rinnalla! Katso uudet kuvat: https://ww
      Suomalaiset julkkikset
      67
      5331
    2. Henkirikos Alakylässä

      Nainen löydetty elottomana, mies otettu kiinni. Mitä on tapahtunut?
      Seinäjoki
      57
      3565
    3. Suodatinpussin kastelemalla saa parempaa kahvia

      Kokeilin niksiä ja kyllä tämä kahvi on parempaa nyt. Ei lainkaan maistu paperiselta. Huljuttelee hanan alla suppiloa pap
      Maailman menoa
      150
      2651
    4. Tidätkö nainen

      että suoraan sanottuna v.tut.aa että pääsit näin lähelle minua. Ei olisi oikeasti aikaa tähän mutta silti aina välillä o
      Ikävä
      105
      2136
    5. Mikä on kaivattusi etunimi?

      Otsikossa siis on kysymys eriteltynä. Vain oikeat vastaukset hyväksytään.
      Ikävä
      89
      1822
    6. Onkohan sinulla kaikki hyvin?

      Nyt vähän sellainen outo tunne tuli. Sinun asiasi niin ei minulle toki tarvitse kertoa. Kunhan mietin...
      Ikävä
      38
      1277
    7. Oho! Arja Koriseva paljastaa TTK:n ekasta suorasta lähetyksestä: "On vähän ärsyttävä yhtälö!"

      Upea Arja Koriseva! Tsemppiä haasteelliseen tilanteeseen! Lue lisää: https://www.suomi24.fi/viihde/oho-arja-koriseva-
      Suomalaiset julkkikset
      21
      1269
    8. En kestä katsoa

      Sitä miten sinusta on muut kiinnostuneita. Olen kateellinen. Siksi pitäisi lähteä pois
      Ikävä
      96
      1228
    9. Huikeeta, mahtavaa, ihan mielettömän upeeta

      Me ostettiin talo Espanjasta. Tosin saadaan käyttää sitä vain muutama viikko vuodessa kun on monta muutakin ostajaa! M
      Kotimaiset julkkisjuorut
      195
      1202
    10. Viimeinen reissu tälle kesälle

      Pian se syksy on. Hyvää huomenta ja aurinkoista päivää. ☕🌞🍁🌻🐺❤️
      Ikävä
      173
      1136
    Aihe