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ä.
Rivin poisto makrolla
7
1144
Vastaukset
- 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 @KundeMinulla 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
Riikka: 3 euron bensa, Ruotsi: bensavero jopa alle EU-minimin
Eipä vaan suomalainen autoilija saa kaikkien rakastamalta Riikalta sympatiaa. Ruotsissa on eri meininki, siellä diskutee823230Riikka runnoo: datakeskuksille tulee UUSI yritystuki
"Suomen valtio erikseen tukee esimerkiksi kryptovaluuttaan tai aikuisviihteeseen tai muuhun keskittyviä datakeskuksia."362050Eläkeläiset siirrettävä muuttotappioalueille
Joutoväki pois ruuhkauttamasta elättäjien arkea. Samalla putoaa jokaisen asumiskulut ja rahaa jää enemmän kuluttamiseen.1671812Miksi naisen pitäisi maksaa 50/50
Vuokrasta miehelle? Eikö se ole miehelle lahja, ja aarre, jos nainen suostuu muuttamaan kanssasi asumaan?2951350Minkä arvosanan 4-10 annat Susanna Laineelle Farmi-juontajana?
Susanna Laine vetää Farmi Suomi -realityä. Minkä arvosanan 4-10 annat Suskille juontohommista? Suosikkijuontaja teki341258Onko se liikaa pyydetty
Voisitko sinä mies kerätä rohkeutta ja ottaa yhteyttä? Minä en jaksa tätä enää. On niin ikävä sinua. Minä niin haluaisin911190- 1081174
En kerro nimeäsi nainen
Sillä olet nyt salaisuus jota kannan sydämessäni. Tämä mitä tunnen ja kuinka sinuun vahvasti ihastuin on jo niin erikoin711090Lahkojen uudestikasteille ei pitä mennä
Sananl. 22:3 Mielevä näkee vaaran ja kätkeytyy, mutta yksinkertaiset käyvät kohti ja saavat vahingon.1201084- 281041