This isn’t the only possible cause. For example, a delay in response could be caused by a blackout (can you imagine a situation where the power goes out for several days?)
Option Explicit
Sub VerdeelOpKarakter_Geoptimaliseerd()
Const MIN_CHAR = 64
Const MAX_CHAR = 90
Dim oSheets As Variant
Dim oSheet As Variant
Dim oCursor As Variant
Dim aRaw As Variant, aToPrint As Variant
Dim aIdx() As Long
Dim i As Long, j As Long, iChar As Integer
Dim sChar As String, sTest As String
oSheets = ThisComponent.getSheets()
oSheet = oSheets.getByName("Cat")
oCursor = oSheet.createCursor()
oCursor.gotoEndOfUsedArea(True)
Rem Copy data of used range to single big array
aRaw = oCursor.getDataArray()
j = UBound(aRaw) + 1
Rem Extract row numbers to dictionary
ReDim aIdx(MIN_CHAR To MAX_CHAR, 0 To j)
For i = LBound(aRaw) + 1 To UBound(aRaw)
sTest = Trim(aRaw(i)(3))
If Len(sTest) > 0 Then ' Skip empty cells
For iChar = MIN_CHAR To MAX_CHAR
sChar = Chr(iChar)
If InStr(sTest, sChar) Then
aIdx(iChar,0) = aIdx(iChar,0) + 1
aIdx(iChar,aIdx(iChar,0)) = i
If Len(sTest) < 2 Then Exit For
EndIf
Next iChar
EndIf
Next i
Rem And put data to sheets
For iChar = MIN_CHAR To MAX_CHAR
sChar = Chr(iChar)
If Not oSheets.hasByName(sChar) Then oShets.insertNewByName(sChar,255)
oSheet = oSheets.getByName(sChar)
oSheet.clearContents(1023)
ReDim aToPrint(0 To aIdx(iChar,0))
i = 0
aToPrint(i) = Array(aRaw(i)(2),aRaw(i)(3),aRaw(i)(10),aRaw(i)(22))
For j = 1 To aIdx(iChar,0)
i = aIdx(iChar,j)
aToPrint(j) = Array(aRaw(i)(2),aRaw(i)(3),aRaw(i)(10),aRaw(i)(22))
Next j
oSheet.getCellRangeByPosition(0,0,3,aIdx(iChar,0)).setDataArray(aToPrint)
Next iChar
Print "Done!"
End Sub