Importazione di enormi file di dati (Microsoft Excel)
Excel ha un limite al numero di righe che puoi avere in un foglio di lavoro, fino a 65.535. È molto possibile, tuttavia, avere un file di dati non elaborati con più di questo numero di righe. Se è necessario importare quel file in Excel, farlo può sembrare quasi impossibile senza l’aggiornamento a Excel 2007 o una versione successiva. (Quelle versioni successive hanno superato il limite di 65.535 righe). Tuttavia, è possibile eseguire un paio di operazioni.
Una possibilità è fare copie del file di testo grezzo (quello che si desidera importare) e quindi ridurre le dimensioni di ciascun file. Ad esempio, se hai un totale di 110.000 righe che devi importare in Excel e stai operando sotto il limite di 65.535 righe, potresti creare due copie del file di testo non elaborato. Elimina la seconda metà del primo file di testo e la prima metà del secondo. Quindi, puoi importare il primo file (ora 55.000 righe) in un foglio di lavoro e il secondo file (anche 55.000 righe)
nella seconda.
Se non desideri suddividere i file di input, potresti prendere in considerazione l’importazione del file in Access. A differenza di Excel, Access non ha praticamente limiti al numero di righe che puoi importare. È quindi possibile lavorare con il file in Access o esportare parti del file da utilizzare in Excel.
Infine, puoi utilizzare una macro per importare i record nel file di origine di grandi dimensioni. Ci sono molti modi per farlo, ma l’idea di base alla base di qualsiasi approccio è recuperare ogni riga dal file sorgente e posizionarla in una nuova riga di un foglio di lavoro. La macro deve tenere traccia di quante righe è stata inserita e passare a un nuovo foglio di lavoro, se necessario.
Public Sub LoadFile() Dim strLine As String Dim I As Long Dim J As Long Dim iLen As Integer Dim iSh As Integer Dim lL As Long Dim sDelim As String Dim MaxSize As Long sDelim = Chr(9) MaxSize = 65000 I = 0 Open "C:\MyDir\MyFile.txt" For Input As #5 Do While Not EOF(5) iSh = (I / MaxSize) + 1 lL = I Mod MaxSize Line Input #5, strLine If Right(strLine, 1) <> sDelim Then strLine = Trim(strLine) & sDelim End If J = 0 Do While Len(strLine) > 1 iLen = InStr(strLine, sDelim) Worksheets("Sheet" & iSh).Offset(lL, J).Value = _ Trim(Left(strLine, iLen - 1)) strLine = Trim(Right(strLine, Len(strLine) - iLen)) J = J + 1 Loop I = I + 1 Loop Close #5 End Sub
La macro presume che tu abbia abbastanza fogli di lavoro già nella tua cartella di lavoro per contenere i dati e che siano numerati Sheet1, Sheet2, Sheet3, ecc. Due variabili che vorrai controllare nel programma sono le impostazioni di sDelim e MaxSize. Il primo specifica quale carattere viene utilizzato come delimitatore di campo nelle informazioni che vengono lette. Il secondo specifica il numero massimo di righe che desideri su ogni foglio di lavoro. (Non impostare MaxSize su un valore superiore a quello consentito dalla tua versione di Excel.)
Infine, nota che la macro apre il file di testo MyFile.txt. Ti consigliamo di modificare questa istruzione Open in modo che apra il file sorgente reale che desideri importare.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2533) si applica a Microsoft Excel 97, 2000, 2002 e 2003.