Grazie, Andrea!
Sub CercaIncassi()
Dim strRagioniSociali() As String, data() As Variant, result() As Variant, flag As Boolean
Dim i As Long, ii As Integer, iii As Integer, LastR As Long, z As Integer
Dim wsRagioniSociali As Worksheet, wsData As Worksheet
Dim wsProbabiliCorrispondenze As Worksheet, ws As Worksheet
Set wsRagioniSociali = Sheets("RagioniSociali")
Set wsData = Sheets("FileIncassi")
For Each ws In Sheets
If ws.Name = "ProbabiliCorrispondenze" Then: flag = True: Exit For
Next
If flag = False Then
Sheets.Add after:=Sheets(Sheets.Count): ActiveSheet.Name = "ProbabiliCorrispondenze"
End If
Set wsProbabiliCorrispondenze = Sheets("ProbabiliCorrispondenze")
With wsRagioniSociali
LastR = .Range("a65536").End(xlUp).Row: ReDim strRagioniSociali(1 To LastR)
For i = 1 To LastR: strRagioniSociali(i) = .Cells(i, "a").Value: Next
End With
With wsData
LastR = .Range("e65536").End(xlUp).Row: ReDim data(1 To LastR, 1 To 4)
For i = 1 To LastR
data(i, 1) = .Cells(i, "c").Value: data(i, 2) = .Cells(i, "b").Value: data(i, 3) = .Cells(i, "d").Value
data(i, 4) = .Cells(i, "e").Value
Next
End With
ReDim result(1 To UBound(data), 1 To 6)
For i = LBound(data) To UBound(data)
For ii = LBound(strRagioniSociali) To UBound(strRagioniSociali)
z = InStr(1, data(i, 4), strRagioniSociali(ii), 1)
If z > 0 Then
iii = iii + 1:
result(iii, 1) = strRagioniSociali(ii) ç====================
result(iii, 2) = Mid(data(i, 4), z + Len(strRagioniSociali(ii)) + 1, 0)
result(iii, 3) = data(i, 2): result(iii, 4) = data(i, 1): result(iii, 5) = data(i, 3): result(iii, 6) = data(i, 4)
End If
Next
Next
MsgBox "Individuate " & iii & " probabili corrispondenze. Confrontare le Ragioni Sociali della colonna 'A' con quelle della colonna 'E'. Buona fortuna!"
With wsProbabiliCorrispondenze
.Range("a:q").Clear
With .Range("a1").Resize(UBound(result, 1), UBound(result, 2))
.Value = result
.Sort key1:=wsProbabiliCorrispondenze.Range("a1"), order1:=xlAscending
End With
End With
Set wsRagioniSociali = Nothing: Set wsData = Nothing: Set wsProbabiliCorrispondenze = Nothing
Erase strRagioniSociali: Erase data: Erase result
End Sub