Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Rivien poisto (Excel)

squid [24.04.2006 21:25:52]

#

Jos minulla on useammassa solussa Excel-taulukossa esim. luku 5555 ja muita soluja on välissä esim 100... kuinkahan onnistuisi poistamaan vain ja ainoastaan 5555 jättäen yhden poistamatta?

neau33 [24.04.2006 22:47:02]

#

Moikka squid!

Täss ois yks tapa...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim sCols As Long, sRows As Long
 Dim cCnt As Long, rCnt As Long
 Dim cnt As Integer
 sCols = ActiveSheet.Columns.Count ' = 256 saraketta
 sRows =  ActiveSheet.Rows.Count ' = 65535 rivä
  For cCnt = 1 To sCols   '*sama jutska: cCnt = sCols To 1 Step -1
   For rCnt = 1 To sRows  '*lopusta alkuun: rCnt = sRows To 1 Step -1
    If ActiveSheet.Cells(rCnt, cCnt).Value = 5555 And cnt = 1 Then
     ActiveSheet.Cells(rCnt, cCnt).Value = Empty
    End If
    If ActiveSheet.Cells(rCnt, cCnt).Value = 5555 And cnt = 0 Then cnt = 1
   Next rCnt
  Next cCnt
End Sub

BadSource [25.04.2006 07:55:44]

#

Nopeampi tapa on valita sivulta vain solut, jotka sisältävät arvon, ettei tarvitse tyhjiä soluja läpi käydä turhaan.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
                                              Cancel As Boolean)
    Dim solu As Range
    Dim eka As Boolean

    'estetään turha vilkkuminen piilottamalla tekemisemme käyttäjältä estämällä ruudunpäivitys
    Application.ScreenUpdating = False
    'valitaan sivulta vain solut, joissa on sisältöä
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    'käydään edellisellä rivillä valitut solut läpi yksi kerrallaan
    'huomioi, että tällä tavalla solut käydään läpi rivi, ei sarake kerrallaan
    For Each solu In Selection
        If solu.Value = "5555" Then 'tarkistetaan solun arvo
            If Not eka Then 'onko ensimmäinen haettu arvo löytynyt?
                eka = True 'ei, eli kirjataan löytyminen
            Else 'ensimmäinen arvo löytynyt
                solu.Value = Empty 'poistetaan muut
            End If
        End If
    Next solu
    'aktivoidaan klikattu solu, muuten valituiksi jäävät solut, joissa on/oli arvo
    Target.Select
    'Tärkeä! Palautetaan ruudun päivitys,
    'muuten excel käyttö turhan hankalaa, kun tekemiset ei näy ruudulta
    Application.ScreenUpdating = True

End Sub

squid [25.04.2006 08:54:50]

#

Kiitos molemmille vastaajille

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta