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

1078

    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. Saako kaunis ihminen parempaa kohtelua?

      Onko kauniin ihmisen elämä "helpompaa" kuin tavallisen näköisen ihmisen? Olen kuullut väittämän, että kaunis ihminen saa
      Sinkut
      52
      2100
    2. En rehellisesti usko et oisit

      Sekuntiakaan oikeasti mua kaivannut. Tai edes miettinyt miten mulla menee. Jotenkin todennäköisesti hyödyt tästäkin jos
      Ikävä
      31
      1660
    3. Näin sinusta taas unta!

      Unessa olin pakahtuneesti rakastunut sinuun. Olimme vanhassa talossa jossa oli yläkerran huoneissa pyöreät ikkunat. Pöly
      Ikävä
      14
      1444
    4. Suomennettua: professori Jeffrey Sachs avaa Ukrainan sodan taustat luennollaan EU parlamentissa

      Jeffrey Sachs on yhdysvaltalainen ekonomisti. Sachs toimii Columbian yliopiston The Earth Instituten johtajana. Aiemmin
      NATO
      351
      1436
    5. Ei ole kyllä mennyt

      Kovin hyvin kun alussa pieni sekoaminen hänestä 😏
      Ikävä
      10
      1394
    6. Nainen, olet jotenkin lumoava

      Katselen kauneuttasi kuin kuuta, sen loistoa pimeässä. Sen kaunis valo on kaunista sekä herkkää ja lumoavaa. Olet naisel
      Ikävä
      68
      1305
    7. Se sinun kaipauksen kohde

      Ei todellakaan käy täällä höppänä mies.
      Ikävä
      12
      1098
    8. En muuttaisi sinusta mitään

      Ensin olit etäinen ja yritin pysyä tutkan alapuolella. Mutta ei silmiltäsi jää mitään huomaamatta, kuten minulla ei kuul
      Ikävä
      8
      1014
    9. Olet muutenkin tyhmä

      Ja käyttäydyt epäasiallisesti siinä työssäsi.
      Ikävä
      81
      982
    10. Et katso sitä

      Niinkuin minua. Ehkä se luo toivetta
      Ikävä
      20
      969
    Aihe