View Single Post
Old 04-04-2007, 15:06   #6
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Cittā: Castellammare di Stabia (NA)
Messaggi: 2031
ciao

ecco il codice incriminato
Codice:
Public Sub Compatta(ByVal numRighe As Long, sht As Worksheet)
    'Dichiarazione variabili locali
    Dim i, j, l1, l2 As Long
    Dim strTemp As String
    ' Compattazione sheet: ciclo a partire dall'ultima riga fino alla terza:
    With sht
        For j = 4 To numRighe
            i = numRighe - j + 4
            ' se (la colonna descrizione č uguale a quella della riga precedente) e se(coincidono le celle NID_PI)
            If ((.Cells(i, colDescr).Value = .Cells(i - 1, colDescr).Value) And (.Cells(i, colNID).Value = .Cells(i - 1, colNID).Value)) Then
                ' aggiungo alla cella Scenario della precedente riga ",<cella Scenario della riga attuale>"
                ' Alfonso: aggiunto controllo superamento massimo numero caratteri nella cella
                ' solo in caso la somma dei due campi non superi i 32768 caratteri procedo all'accodamento
                If (Len(.Cells(i, colScenario).Value) + Len(.Cells(i - 1, colScenario).Value)) < NMAXCAR Then
                    ' Alfonso: utilizzo un buffer e le funzioni MId$ per l'accodamento dei valori "Scenario"
                    l1 = Len(.Cells(i - 1, colScenario).Value)
                    l2 = Len(.Cells(i, colScenario).Value)
                    ' allocazione buffer per l'accodamento
                    strTemp = Space$(l1 + l2 + 1)
                    ' accodamento stringa campo scenario
                    Mid$(strTemp, 1) = .Cells(i - 1, colScenario).Value
                    Mid$(strTemp, l1 + 1) = ":"
                    Mid$(strTemp, l1 + 2) = .Cells(i, colScenario).Value
                    ' aggiornamento valore cella
                    .Cells(i - 1, colScenario).Value = strTemp
                End If
                ' elimino la riga
                Rows(i).Delete
            End If
        Next j
    End With
End Sub
in pratica, per un file .csv da 50000 righe, excel arriva ad allocare anche 200MB...

__________________
ho fatto affari con: na decina di anime
swarm č offline   Rispondi citando il messaggio o parte di esso