Detailed Last Row Finder
You end two functions like this -
End Function`

Which might be a typo, but it causes errors.

Readability
Indentation
Indenting your code makes it a lot easier to follow and maintain
Sub findLast2()
    '&lt;snip&gt;
    Dim i As Integer
    Dim arr() As Variant
    Set ws = Sheet1
    LC = lColCount(ws)
    i = 1
    ReDim arr(1 To LC)
    Do While i &lt;&gt; LC + 1
        LR = lRowCount(ws, i)
        arr(i) = LR
        i = i + 1
    Loop
    LR = Application.WorksheetFunction.Max(arr())
    Dim Res As Variant
    For Each Res In arr()
        Debug.Print Res
    Next Res
    '&lt;snip&gt;
End Sub

Comments
&quot;code tell you how, comments tell you why&quot;. The code should speak for itself, if it needs a comment, it might need to be made more clear. If not, the comment should describe why you're doing something rather than how you're doing it. Here are a few reasons to avoid comments all together.
Naming
Variable names - give your variables meaningful names.
What is LC? lastColumn. LR? lastRow What is vArr() an array of?
Additionally, Standard VBA naming conventions have camelCase for local variables and PascalCase for other variables and names.
Structure
If possible, you should pass argument ByVal rather than ByRef.
You also declare all of your subs and functions as Public by default, so call them public or private to ensure it's clear
Public Sub FindLastRow()
Private Function ReturnColumnLetter(ByVal columnNumber As Long) As String

and so on.