Príklad, aj s kontrolou či tam už nejaké dáta sú a pod. Spustíte to iba s ktorými stĺpcami chcete, vkladá rovno hodnoty, nie vzorce. AK by sa Vám nepozdávalo volať 50x procedúru pre každý stĺpec, môžeme to upraviť, aby urobilo všetko naraz.
Dim Otazka As Byte
Sub Vypocitaj()
Otazka = 0
Rozdel ActiveSheet.Columns(1)
Rozdel ActiveSheet.Columns(3)
End Sub
Sub Rozdel(STLP As Range)
Dim Riadkov As Long, Pole(), Kontrola As Long, i As Long, C
With STLP.Resize(Rows.Count - 1).Offset(1, 0)
Riadkov = STLP.Cells(Rows.Count, 1).End(xlUp).Row - 1
If Riadkov > 0 Then
Kontrola = WorksheetFunction.CountIf(.Offset(0, 1), "<>")
If Kontrola > 0 Then
Select Case Otazka
Case 0: Otazka = MsgBox("Vo výslednej oblasti sa už nachádzajú data." & vbNewLine & "Chcete ich prepísať ?", vbQuestion + vbYesNo, "Upozornenie")
If Otazka = 7 Then Exit Sub
Case 7: Exit Sub
End Select
End If
ReDim Pole(1 To Riadkov, 1 To 1)
If Riadkov = 1 Then Pole(1, 1) = .Value2 Else Pole = .Value2
On Error Resume Next
For i = 1 To Riadkov
If Pole(i, 1) <> "" Then
C = Split(Pole(i, 1), "-")
Pole(i, 1) = TimeValue(C(1)) - TimeValue(C(0))
Select Case Err.Number
Case Is > 0: Pole(i, 1) = CVErr(xlErrValue): Err.Clear
Case 0: If Pole(i, 1) < 0 Then Pole(i, 1) = CVErr(xlErrValue)
End Select
End If
Next i
On Error GoTo 0
.Offset(0, 1).Value2 = Pole
End If
End With
End Subcitovat