Stampa combinazioni con VBA
Hai un problema con Excel? 
Stampa combinazioni con VBA
di taranto57 (utente non iscritto) data: 30/08/2013 16:27:05
Buona sera a tutti.
Dopo varie ricerche e alcuni tentativi sono riuscito a rappresentare le
combinazioni date da 9 elementi sistemati in celle di un foglio Excel,
A1=A B1=D C1=G
A2=B B2=E C2=H
A3=C B3=F C3=I
Con la macro (in VBA), di seguito riportata, riesco ad ottenere le 27
possibili combinazioni a partire da A15 e sino a C41 con sistemazione delle
combinazioni in orizzontale da A15 a C15 .. da A41 a C41:
A D G
A D H
A D I
A E G
A E H
A E I
A F G
A F H
A F I
B D G
B D H
B D I
B E G
B E H
B E I
B F G
B F H
B F I
C D G
C D H
C D I
C E G
C E H
C E I
C F G
C F H
C F I
e questo è il listato:
Private Sub CommandButton1_Click()
Dim A, B, C, Riga As Integer
Riga = 15 'riga di partenza delle combinazioni
For A = 1 To 3
For B = 1 To 3
For C = 1 To 3
Cells(Riga, 1) = Cells(A, 1)
Cells(Riga, 2) = Cells(B, 2)
Cells(Riga, 3) = Cells(C, 3)
Riga = Riga + 1
Next C
Next B
Next A
End Sub
Vorrei sapere come implementare il listato affinché le combinazioni siano sviluppate in verticale a partire sempre da A15:
AAA ......
DDD ......
GHI ......
(le 27 combinazioni sono sempre le stesse, solo che la lettura delle terne da orizzontale passa a verticale)
Ringrazio anticipatamente
Private Sub CommandButton1_Click()
Dim A, B, C, Riga As Integer
Riga = 15 'riga di partenza delle combinazioni
For A = 1 To 3
For B = 1 To 3
For C = 1 To 3
Cells(Riga, 1) = Cells(A, 1)
Cells(Riga, 2) = Cells(B, 2)
Cells(Riga, 3) = Cells(C, 3)
Riga = Riga + 1
Next C
Next B
Next A
End Sub
|
di HarryBosch data: 30/08/2013 20:23:25
Se selezioni l'intervallo e fai "copia-->trasponi" ottieni il risultato che stai cercando, anche se non puoi sovrascrivere i dati a partire dalla stessa cella.
Modificando la sub che hai postato, devi invertire i riferimenti di cella e colonna dell'istruzione Cells, nel modo sotto indicato:
Private Sub CommandButton1_Click()
Dim A As Byte, B As Byte, C As Byte
Dim col As Integer
For A = 1 To 3
For B = 1 To 3
For C = 1 To 3
col = col + 1
Cells(15, col) = Cells(A, 1)
Cells(16, col) = Cells(B, 2)
Cells(17, col) = Cells(C, 3)
Next C
Next B
Next A
End Sub |
Vuoi Approfondire?