Function NoiKyTu(ByVal SoKyTu As Integer, ByVal Deli As String, ByVal dk As Boolean, ParamArray sRng()) As String
Dim Rng, sArr, tmp, i As Long, j As Long, n As Long, Res As String
For Each Rng In sRng
sArr = Rng.Value
If TypeName(sArr) <> "Variant()" Then
ReDim sArr(1 To 1, 1 To 1)
sArr(1, 1) = Rng.Value
End If
For j = 1 To UBound(sArr, 2)
For i = UBound(sArr, 1) To 1 Step -1
tmp = sArr(i, j)
If Len(tmp) = SoKyTu Then
If dk = False Then
If Res = Empty Then Res = tmp Else Res = Res & Deli & tmp
Exit For
Else
For n = 1 To SoKyTu - 1
If InStr(n + 1, tmp, Mid(tmp, n, 1)) > 0 Then Exit For
Next n
If n = SoKyTu Then
If Res = Empty Then Res = tmp Else Res = Res & Deli & tmp
Exit For
End If
End If
End If
Next i
Next j
Next
NoiKyTu = Res
End Function