Extracting and analyzing data from SAP
You can move the range values first to the array before doing your loops.
You can try below:

Dim tbArray, fcArray, gcArray ' Variant type
Dim elr As Long, flr As Long, glr As Long, i As Long
Dim T

With Sheets("YourSheetName") ' always be explicit when working with objects
    elr = .Range("E" &amp; .Rows.Count).End(xlUp).Row
    flr = .Range("F" &amp; .Rows.Count).End(xlUp).Row
    'glr = .Range("G" &amp; .Rows.Count).End(xlUp).Row
    tbArray = .Range("F2:J" &amp; elr) ' pass Range values, arr becomes 2D array
    fcArray = .Range("F2:F" &amp; flr) ' creates horizontal 2D array but regardless
    gcArray = .Range("G2:G" &amp; flr) ' this will be used for matching only

    For i = LBound(tbArray, 1) To UBound(tbArray, 1)
        If Len(tbArray(i, 1)) = 0 Then ' you can use tbArray(i, 1) = "", just preference
            For Each T In Split(tbArray(i, 5), " ")
                If Not IsError(Application.Match(T, fcArray, 0)) Then
                    tbArray(i, 1) = T ' corresponds to F
                ElseIf Not IsError(Application.Match(T, gcArray, 0)) Then
                    tbArray(i, 2) = T ' corresponds to G
                End If
            Next
        End If
    Next
    .Range("F2:J" &amp; elr) = tbArray ' return the array to range
End With


This is compiled but not tested. We took advantage of using the Match Function.
You based your last rows to Columns E, F and G respectively so I just mimicked that.
No idea on how much data it can handle, but a 10K wouldn't hurt I guess.