esplosione tabella



  • "esplosione" tabella
    di Federico (utente non iscritto) data: 17/01/2011

    Ciao a tutti,
    ho un problema con una tabella excel... spero di riuscire a spiegarmi.

    colonna d: ho una serie di valori (ad es: d4 = 15).
    colonna f: ho un contatore che indica quante volte il valore in d si ripete uguale in un database (ad es: f4 = 3 significa che nel database il valore 15 si ripete tre volte).

    poi d5 = 21 e f5 = 1 significa che nel database il valore 21 si ripete solo una volta.

    poi d6 = 15 e f6 = 2 significa che nel database il valore 15 si ripete due volte.

    poi d7 = 16 e f7 = 11 significa che nel database il valore 16 si ripete undici volte.

    ...

    ora io vorrei creare una colonna del tipo

    15
    15
    15
    21
    15
    15
    16
    16
    16
    16
    ...

    ovvero copiare tante volte il valore di una cella d quanto è il numero scritto nella corrispondente cella f.

    avete un'idea di come posso procedere?

    grazie mille a tutti,
    federico



  • di Albatros54 (utente non iscritto) data: 17/01/2011

    Ti posto questo codice,lo devi adattare alle tue esigenze.
    il codice non fa altro che copiare i dati che tu hai nel foglio1 nella colonna a , nella colonna c metti il valore che si ripete( il contatore nel tuo caso).
    nel foglio2 verra copiato il dato , ripetuto secondo il valore del contatore
    ciao
    albatros54

     
    Public Sub albatros54()
        Dim sh4 As Worksheet
        Dim sh5 As Worksheet
        Dim lUltRiga As Long
        Dim count As Long
        Dim lng As Long
        Dim ln As Long
        Dim nm As Long
        Dim s1 As String
        Dim s2 As String
        
        With ThisWorkbook
            Set sh4 = .Worksheets("Foglio1")
            Set sh5 = .Worksheets("Foglio2")
        End With
        With sh4
            count = 1
            lUltRiga = .Range("A" & .Rows.count).End(xlUp).Row
            For lng = 1 To lUltRiga
            s1 = .Range("B" & lng)
            nm = .Range("B" & lng).Offset(0, 1)
            For ln = 1 To nm
            s2 = s1 & ln
            sh5.Cells(count, 1) = sh4.Cells(lng, 1)
            sh5.Range("b" & count) = sh4.Range("b" & lng)
            sh5.Range("B" & count).Offset(0, 2) = s2
            count = count + 1
            Next
            
           Next
             End With
            
    End Sub
    



  • di Federico (utente non iscritto) data: 18/01/2011

    Grazie mille, ora ci provo.