Excel - controllo codici alfanumerici non ancora utilizzati

Asked By paolo.alber on 22-May-12 09:48 AM
SAlve a tutti:
ho un file excel con contenente un progressivo alfanumerico (tutte le lettere dell'alfabeto + i 10 numeri):
codice
01
02
03
...
09
10
11
...
99
...
A0
A1
A2
...
AA
AB
AC
...
0A
0B
...
ZW
ZZ

il problema che voglio risolvere:quali sono i codici non utilizzati al momento delle 1296 possibili combinazioni ((26+10)^2)?
sia in vba che direttamente con formule.

Grazie in anticipo

Paolo


Andrea.9 replied to paolo.alber on 22-May-12 12:41 PM
mento delle 1296 possibili combinazioni ((26+10)^2)?

potresti fare
=3D1296-SOMMA(1/CONTA.SE(rng;rng))
dove rng =E8 un nome che contiene il tuo intervallo di dati
da inserire matriciale (Ctrl+Shift+Invio)
ps non =E8 farina del mio sacco ma .... chi cerca trova :-)
ciao
andrea
Bruno Campanini replied to paolo.alber on 22-May-12 08:39 PM
paolo.albera@gmail.com pretended :

A voler chiamare le cose col loro nome, si tratta di disposizioni con
ripetizione e non di combinazioni.
Hai omesso di precisare un dato importante: il range dei codici gi?
utilizzati pu? contenere duplicati?

Bruno
paolo.alber replied to Bruno Campanini on 23-May-12 08:31 AM
No nessun duplicato
paolo.alber replied to Andrea.9 on 23-May-12 08:47 AM
Ma ottengo il nro dei codici ancora a disposizione, mentre io voglio l'elen=
co...
(se ho capito bene)
grazie cmq.
Paolo
Bruno Campanini replied to paolo.alber on 24-May-12 04:30 AM
on 23-05-12, paolo.albera@gmail.com supposed :


Prova questa (SourceRange pu? anche contenere duplicati):

=====================================
Public Sub ControlloCodici()
Dim SourceRange As Range, TargetRange As Range
Dim collCodici As New Collection, Disposizioni(1 To 1296) As String
Dim k As Range, n As Integer, i As Integer, j As Integer

' Definizioni ----------------------
Set SourceRange = [Sheet3!A1:A3000]
Set TargetRange = [Sheet3!B1]
' ----------------------------------

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 0 To 9
collCodici.Add i, CStr(i)
Next
For i = 65 To 90
collCodici.Add Chr(i), Chr(i)
Next

For i = 1 To 36
For j = 1 To 36
n = n + 1
Disposizioni(n) = collCodici(i) & collCodici(j)
Next
Next

For Each k In SourceRange
For j = 1 To 1296
If k = Disposizioni(j) Then
n = n + 1
Disposizioni(j) = "usato_" & Disposizioni(j)
Exit For
End If
Next
Next

n = 0
For i = 1 To 1296
If Left(Disposizioni(i), 5) <> "usato" Then
n = n + 1
TargetRange(n).NumberFormat = "@"
TargetRange(n) = Disposizioni(i)
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
=======================================

Bruno
Sceriffo replied to Bruno Campanini on 24-May-12 05:10 AM
Ottimo Bruno era proprio quello che intendevo!

Grazie ancora!
Paolo