Importera Huge datafiler

October 11

Excel har en gräns för hur många rader du kan ha i ett kalkylblad upp till 65.535. Det är mycket möjligt, emellertid, att ha en rå datafil som har mer än detta antal rader. Om du behöver importera den filen till Excel, kan då göra så verkar nästan omöjligt utan att uppgradera till Excel 2007 eller en senare version. (Dessa senare versioner bröt 65.535 raden gränsen.) Det finns ett par saker du kan göra, dock.

En möjlighet är att göra kopior av rå textfil (den du vill importera) och sedan klippa storleken på varje fil ner. Till exempel, om du har totalt 110.000 rader du behöver för att importera till Excel, och du verkar under 65.535-raden gräns, kan du göra två kopior av den råa textfil. Ta bort den andra halvan av den första textfilen och den första halvan av den andra. Således kan du importera den första filen (nu 55.000 rader) i ett kalkylblad och den andra filen (även 55.000 rader) i den andra.

Om du inte vill bryta upp dina indatafiler, kan du överväga att importera filen i Access. Till skillnad från Excel, har tillgång nästan ingen gräns för hur många rader du kan importera. Du kan sedan antingen arbeta med filen i Access, eller exportera delar av filen för att använda i Excel.

Slutligen kan du använda ett makro för att importera posterna i den stora källfilen. Det finns många sätt du kan göra detta, men den grundläggande idén bakom någon metod är att hämta varje rad från källfilen och placera den i en ny rad av ett kalkylblad. Makro måste hålla reda på hur många rader det placeras, och byta till ett nytt kalkylblad, om det behövs.

Public Sub laddatafil ()
Dim strLine As String
Dim Jag 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
Öppna "C: \ Mydir \ minfil.txt" För Input Som # 5
Gör Medan Inte EOF (5)
ISH = (I / MaxSize) + 1
IL = I Mod MaxSize
Line Input # 5, strLine
Om Höger (strLine, 1) <> sDelim Sedan
strLine = Trim (strLine) & sDelim
End If
J = 0
Gör Medan Len (strLine)> 1
Ilen = InStr (strLine, sDelim)
Arbetsblad ("Blad" & ISH) .Offset (LL, J) .Value = _
Trim (Vänster (strLine, Ilen - 1))
strLine = Trim (Right (strLine, Len (strLine) - Ilen))
J = J + 1
Loop
I = I + 1
Loop
Close # 5
End Sub

Makrot förutsätter att du har tillräckligt med kalkylblad redan i arbetsboken för att innehålla de uppgifter, och att de är numrerade Tabell1, Tabell2 Sheet3, etc. Två variabler som du kommer att vilja kolla in programmet är inställningarna för sDelim och MaxSize. Den första anger vad tecknet används som fältavgränsare i informationen som läses. Den andra anger det maximala antalet rader du vill ha på varje kalkylblad. (Ställ inte in MaxSize större än vad din version av Excel tillåter.)

Slutligen, notera att makrot öppnar textfilen minfil.txt. Du vill ändra denna Open uttalande så att den öppnar den verkliga källan fil du vill importera.

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (2533) gäller för Microsoft Excel 97, 2000, 2002, och 2003.