Untitled

 avatar
unknown
vbscript
3 years ago
2.2 kB
3
Indexable
# meinaa kommenttiriviä, en tiiä mikä tässä on sille oikee syntaxi.

Sub etsivalukatkot()

#loopataan kaikki rivit 
N = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To N
    # jos päähälytys
    If Worksheets("Sheet1").Cells(i, 1).Value = "V22B03" Or Worksheets("Sheet1").Cells(i, 1).Value = "V22B04" Then
      
        # otetaan ylös päähälytyksen aika
        päähälytyksenaika = Worksheets("Sheet1").Cells(i, "oikee sarake tähän, missä se aikaleima onkaan").Value
        
        #jos se aika on siellä solussa stringinä niin pitää käyttää CDate funktiota että se string muuttuu Date muuttujaks. esim: päähälytyksenaika = Cdate(päähälytyksenaika)
        
        # j on toisen loopin looppimuuttuja
        j=i+1
        
        
        #whilen sisällä oleva koodi suoritetaan jos
        #1. ollaan max vikalla rivillä JA
        #2. aikaero on alle 1min (käytetään vertailuun DateDiff("s", aika1, aika2) funktiota joka palauttaa kahden ajan eron sekunteina) JA
        #3. rivin hälytys ei oo päähälytys
        
        Do While DateDiff("s", päähälytyksenaika, Worksheets("Sheet1").Cells(i, "oikee sarake tähän, missä se aikaleima onkaan").Value) <= 60
          
          
          # jos mennään vikasta rivistä yli tai rivillä on päähälytys niin stopataan looppi ja siirretään j = j-1
          If j > N OR Worksheets("Sheet1").Cells(j, 1).Value = "V22B03" Or Worksheets("Sheet1").Cells(j, 1).Value = "V22B04" Then
            
              j = j - 1
            
              Exit Do
          End If
          j = j + 1
        
          Loop
      
      # kun toka looppi on loppunu niin tiedetään että kopioidaan rivit i:stä j:hin.
      
      Worksheet("Sheet1").Rows(i & ":" j).Copy
      
      # tässä ilmeisesti aktivoidaan sheet2 ja valitaan eka tyhjä rivi johon pastetaan sheet1 kopioidut rivit
      
      Worksheets("Sheet2").Activate
      b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
      Worksheets("Sheet2").Cells(b + 1, 1).Select
      ActiveSheet.Paste
      
      # hypätään suoraan i=j koska tiedetään että tossa välissä ei voi olla päähälytyksiä
      i=j
      End If
      
Next