Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Matteo,
più che una formula forse ti potrebbe essere utile una procedura vba che, una volta elencati di seguito le varie tipologie di operazione con relative descrizioni, assegni in automatico e in maniera massiva i codici alfanumerici.
Vedi se qualcosa del genere potrebbe fare al caso tuo:
Option Explicit
Sub AssengaCodiciAlfanumerici()
Const sNomeFoglioDati As String = "Foglio1"
Const sPrimaCellaTipologie As String = "A1" '<=== cella iniziale compresa l'intestazione dove sono presenti le "Tipologie"
Const offSetColonnaCodici As Long = 2 '<=== posizione della colonna dei codici rispetto alla colonna delle tipologie
Const NumeroCaratteriCodice As Long = 2 '<=== numero caratteri di cui si compone il codice prima della numerazione progressiva
Dim ArrTipologia As Variant
Dim NumRighe As Long, i As Long
Dim dictTipologie As Object
Dim sTipologia As String
Dim sCodice As String
Dim arrCodici() As Variant
Set dictTipologie = CreateObject("Scripting.Dictionary")
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
On Error GoTo Errore
With ThisWorkbook
With .Worksheets(sNomeFoglioDati)
With .Range(sPrimaCellaTipologie)
With .CurrentRegion
NumRighe = .Rows.Count - 1
ReDim arrCodici(1 To NumRighe, 1 To 1)
ArrTipologia = .Resize(NumRighe).Offset(1).Columns(1).Value
For i = 1 To NumRighe
sTipologia = UCase(Left(ArrTipologia(i, 1), NumeroCaratteriCodice))
If Not dictTipologie.Exists(sTipologia) Then
dictTipologie.Add sTipologia, 1
sCodice = sTipologia & 1
Else
dictTipologie(sTipologia) = dictTipologie(sTipologia) + 1
sCodice = sTipologia & dictTipologie(sTipologia)
End If
arrCodici(i, 1) = sCodice
Next i
End With '.CurrentRegion
.Offset(1, offSetColonnaCodici).Resize(NumRighe).Value = arrCodici
End With '.Range(sPrimaCellaTipologie)
End With '.Worksheets(sNomeFoglioDati)
End With 'ThisWorkbook
RiprendiErrore:
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
Errore:
MsgBox Err.Number & vbNewLine & Err.Description, vbCritical, "VBA Error!"
Resume RiprendiErrore
End Sub
Qui trovi un file excel di esempio dove ho fatto i test:
ciao