kunde

kunde profiilikuva
Joulu 2024
Vapaa kuvaus

Isaan Rules WFF CCC If you walked away smiling-then for you the price was right Keep Exceling Suosikkibändit/artistit: Queen, Rammstein, genesis, Bruce Bringsteen, Kino, Mandref Mann Earth band Who Lempikirjat: ohjelmointi... Suosikkipalstat Suomi24 Keskusteluissa: EXCEL, Kivitalot, EPS En pidä: pakkanen ja loskakelit Ruoka & juoma: loimulohi ja valkkari Linkit: http://www.kundepuu.com, Khorat Koulutus: --- Ammatti: Tiede/teknologia Työskentelen: freelancer Ase tai siviilipalvelus: yliluutnantti Siviilisääty: Varattu Lapset: --- Hakusanat: Thaimaa, korat, Excel, VBA, ACAD, CNC, Polyurea, EPS, MgO elementti

Liittynyt 20v sitten
7 aloitusta · 1377 kommenttia
Uusimmat aloituksetSuosituimmat aloituksetUusimmat kommentit
lähetä mulle mallitiesoto siitä missä se bugi esiintyy
[email protected]

muutokset

Sub Teetaulukko()
Dim vika As Long
Dim solu As Range
Dim i As Long
Dim j As Long
Dim viikko As Long
With Worksheets("Koonti")
.Activate
.Cells = ""
.Range("B1") = "viikko:"
.Range("B2") = "klo"
.Range("C1").Formula = "1"
LisääSarjat Range("C1"), 1, 52
LisääSarjat2 Range("A3")
End With
Worksheets("Uusi").Activate
vika = Range("A65536").End(xlUp).Row
For Each solu In Range("A1:A" & vika)
viikko = ViikkoISO(CDate(solu))
If solu.Offset(0, 1) = 1 Then
solu.Offset(0, 3) = Format(solu + solu.Offset(0, 2), "yyyy-mm-dd hh:mm:ss")
solu.Offset(0, 4) = Format(solu, "hh")
solu.Offset(0, 5) = Format(solu + solu.Offset(0, 2), "hh")
solu.Offset(0, 6) = Minute(solu)
solu.Offset(0, 7) = Minute(solu.Offset(0, 3))
If solu.Offset(0, 5) < solu.Offset(0, 4) Then solu.Offset(0, 5) = solu.Offset(0, 5) + 24
'siirretään
'sama tunti
If solu.Offset(0, 4) = solu.Offset(0, 5) Then
'näyttää tunnit 1/100 tarkkuudella
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2).NumberFormat = "0.00"
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = (Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(Minute(solu.Offset(0, 2)))) / 60
'tunnin ero
Else
If solu.Offset(0, 5) - solu.Offset(0, 4) = 1 Then
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2).NumberFormat = "0.00"
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = (Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(60 - Minute(solu))) / 60

Worksheets("Koonti").Range(UCase(Format(solu.Offset(0, 3), "dddd"))).Cells(Format(solu.Offset(0, 3), "hh") + 1, viikko + 2).NumberFormat = "0.00"
Worksheets("Koonti").Range(UCase(Format(solu.Offset(0, 3), "dddd"))).Cells(Format(solu.Offset(0, 3), "hh") + 1, viikko + 2) = (Worksheets("Koonti").Range(UCase(Format(solu.Offset(0, 3), "dddd"))).Cells(Format(solu.Offset(0, 3), "hh") + 1, viikko + 2) + CDbl(Minute(solu.Offset(0, 3)))) / 60
'usean tunnin ero
Else
For i = solu.Offset(0, 4) To solu.Offset(0, 5)
If i = solu.Offset(0, 4) Then
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2).NumberFormat = "0.00"
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = (Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(60 - Minute(solu))) / 60
Else
If i = solu.Offset(0, 5) Then
Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(Format(solu.Offset(1, 0), "hh") + 1, viikko + 2).NumberFormat = "0.00"
Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(Format(solu.Offset(1, 0), "hh") + 1, viikko + 2) = (Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(Format(solu.Offset(1, 0), "hh") + 1, viikko + 2) + Minute(solu.Offset(1, 0))) / 60
' vrk vaihtuu
Else
If i > 23 Then
j = i - 24
Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(j + 1, viikko + 2) = 1
Else
j = i
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(j + 1, viikko + 2) = 1
End If

End If
End If
Next
End If
End If
End If
Next
Worksheets("Koonti").Cells.EntireColumn.AutoFit
Worksheets("Koonti").Activate
End Sub

Sub LisääSarjat2(solu As Range)
Dim i As Long
With Worksheets("Koonti")
solu.Select
For i = 1 To 7
ActiveCell = UCase(WeekdayName(i))
ActiveCell.Offset(0, 1).Formula = "0"
ActiveCell.Offset(0, 1).AutoFill Destination:=Range(ActiveCell.Offset(0, 1).Address & ":" & ActiveCell.Offset(23, 1).Address), Type:=xlFillSeries
ActiveWorkbook.Names.Add Name:=ActiveCell, RefersTo:=Range(ActiveCell.Address & ":" & ActiveCell.Offset(23, 54).Address)
Range(ActiveCell) = 0
ActiveCell.Offset(26, 0).Select
Next
End With
End Sub
laskee nyt minuutin tarkkuudella läsnäolot - kiireiltäni en ehtinyt testaamaan paljoakaan, mutta näyttäis menevän oikein

ei saanut lähetetttyä kaikkea koodia(sisältö liian pikä...), mutta ne muut koodinpätkät ei oo muuttunut

Option Explicit
Sub Keskiarvo()
Dim Originaali As Range
Dim vika As Long
Dim i As Long
Dim lkm As Long
Dim solu As Range
Dim alue As Range
Dim Löydetty As Range

On Error Resume Next
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Set Originaali = Columns("A:B")
Worksheets("Uusi").Delete
On Error GoTo 0
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Uusi"
Originaali.Copy Range("A1")
Columns("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'haetaan läsnäoloajat C sarakkeeseen
Columns("C:C").NumberFormat = "[hh]:mm:ss"

vika = Range("B65536").End(xlUp).Row
If Range("B1") = 0 Then
For i = 2 To vika Step 2
Range("B" & i).Offset(0, 1) = Range("A" & i + 1) - Range("A" & i)
Next
Else
For i = 1 To vika Step 2
Range("B" & i).Offset(0, 1) = Range("A" & i + 1) - Range("A" & i)
Next
End If
'lisätään ajat taulukkoon
Teetaulukko
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Sub Teetaulukko()
Dim vika As Long
Dim solu As Range
Dim i As Long
Dim j As Long
Dim viikko As Long
With Worksheets("Koonti")
.Activate
.Cells = ""
.Range("B1") = "viikko:"
.Range("B2") = "klo"
.Range("C1").Formula = "1"
LisääSarjat Range("C1"), 1, 52
LisääSarjat2 Range("A3")
End With
Worksheets("Uusi").Activate
vika = Range("A65536").End(xlUp).Row
For Each solu In Range("A1:A" & vika)
viikko = ViikkoISO(CDate(solu))
If solu.Offset(0, 1) = 1 Then
solu.Offset(0, 3) = Format(solu + solu.Offset(0, 2), "yyyy-mm-dd hh:mm:ss")
solu.Offset(0, 4) = Format(solu, "hh")
solu.Offset(0, 5) = Format(solu + solu.Offset(0, 2), "hh")
solu.Offset(0, 6) = Minute(solu)
solu.Offset(0, 7) = Minute(solu.Offset(0, 3))
If solu.Offset(0, 5) < solu.Offset(0, 4) Then solu.Offset(0, 5) = solu.Offset(0, 5) + 24
'siirretään
'sama tunti
If solu.Offset(0, 4) = solu.Offset(0, 5) Then
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2).NumberFormat = "General"
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(Minute(solu.Offset(0, 2)))
'tunnin ero
Else
If solu.Offset(0, 5) - solu.Offset(0, 4) = 1 Then
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(60 - Minute(solu))
Worksheets("Koonti").Range(UCase(Format(solu.Offset(0, 3), "dddd"))).Cells(Format(solu.Offset(0, 3), "hh") + 1, viikko + 2) = Worksheets("Koonti").Range(UCase(Format(solu.Offset(0, 3), "dddd"))).Cells(Format(solu.Offset(0, 3), "hh") + 1, viikko + 2) + CDbl(Minute(solu.Offset(0, 3)))
'usean tunnin ero
Else
For i = solu.Offset(0, 4) To solu.Offset(0, 5)
If i = solu.Offset(0, 4) Then
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) = Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(Format(solu, "hh") + 1, viikko + 2) + CDbl(60 - Minute(solu))
Else
If i = solu.Offset(0, 5) Then
Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(Format(solu.Offset(1, 0), "hh") + 1, viikko + 2) = Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(Format(solu.Offset(1, 0), "hh") + 1, viikko + 2) + Minute(solu.Offset(1, 0))
' vrk vaihtuu
Else
If i > 23 Then
j = i - 24
Worksheets("Koonti").Range(UCase(Format(solu.Offset(1, 0), "dddd"))).Cells(j + 1, viikko + 2) = 60
Else
j = i
Worksheets("Koonti").Range(UCase(Format(solu, "dddd"))).Cells(j + 1, viikko + 2) = 60
End If

End If
End If
Next
End If
End If
End If
Next
Worksheets("Koonti").Cells.NumberFormat = "General"
Worksheets("Koonti").Cells.EntireColumn.AutoFit
Worksheets("Koonti").Activate
End Sub






Keep EXCELing
@Kunde
moduuliin...
esim.

Sub Auto_Open()
Worksheets("Sheet1").Range("A1") = Worksheets("Sheet1").Range("A1") + 1
End Sub

Keep EXCELing
@Kunde
joku ristiriita mallitiedostossa tai sitten en ymmärrä juttua. Nyt siis pyöristää tunnit ylöspäin 30 min väleille ja jos muutos puolikkaalla tunnilla silloin 0,5 muutoin voimassa oleva 0 tai 1
nyt mallissasi on kuitenkin loppupäivällä pelkkää ykköstä vaikka muutoksia tapahtuu ja vieläpä puolikkaalle tunnille?
vaatii parempia ohjeita
tossa nyt koodin pätkä mikä muuttaa ajat ja poistaa alle 15 min ajat

hipsujen paikkoja vaihtamalla voit kokeilla aikojen pyöristyksiä alas tai ylöspäin tai lähimpään 30 min...

nythän siinä pyöristyksen jälkeen voi olla sekä 0 tai 1 samalla ajalla ja mitäs sitten tapahtuu???

originaalikoodihan laskee keskiarvojatunneille, joten tulos on tietenkin väärä

Sub Keskiarvo()
Dim Originaali As Range
Dim vika As Long
Dim i As Long
Dim lkm As Long
Dim solu As Range
Dim alue As Range
On Error Resume Next

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Set Originaali = Columns("A:B")
Worksheets("Uusi").Delete
On Error GoTo 0
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Uusi"
Originaali.Copy Range("A1")
Columns("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns("C:C").NumberFormat = "[hh]:mm:ss"
vika = Range("B65536").End(xlUp).Row
If Range("B1") = 0 Then
For i = 2 To vika Step 2
Range("B" & i).Offset(0, 1) = Range("A" & i + 1) - Range("A" & i)
Next
Else
For i = 1 To vika Step 2
Range("B" & i).Offset(0, 1) = Range("A" & i + 1) - Range("A" & i)
Next
End If
Columns("A:C").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C1").Select
'1/96 =15 min (tunti 1/24 vrk ja 1/4 osa siitä)
Do Until ActiveCell > 1 / 96
ActiveCell.Offset(1, 0).Select
Loop
Range("A1:A" & ActiveCell.Row - 1).EntireRow.Delete
Columns("A:C").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
vika = Range("A65536").End(xlUp).Row
For Each solu In Range("A1:A" & vika)
'vba funktio pyöristää lähinpään alas tai ylöspäin
'solu = Mround(solu, 1 / 48)
'excelin oma pyöristää ylöspäin
solu = Application.WorksheetFunction.Ceiling(solu, 1 / 48)
'excelin oma pyöristää alaspäin
'solu = Application.WorksheetFunction.Floor(solu, 1 / 48)
Next

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub