Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 62
Default Manipulating Text File

I have a text file (*.txt) which contains 130,000 rows of records. Its
impossible for Excel to import in full. Even if I use MS Query to extract, it
is still not possible because its content is very abstract (combination of
table & words).

I understand Excel VBA can manipulate text files but I have no idea of how
to achieve the below.

Every 130 rows of record makes up 1 page (if I import to Excel). This means,
theres 1,000 pages in the entire 130,000 rows of records contained in this
text file. For each of the page, I only need its first upper half that is row
#1 to row row # 65. The VBA should delete row # 66 to row # 130 for every
page.

For example: my text file
row 1 ~ 65 (preserve)
row 66 ~ 130 (delete)
row 131 ~ 195 (preserve)
row 196 ~ 260 (delete)
row 261 ~ 325 (preserve)
row 326 ~ 390 (delete)
€¦..and so on.

My file is located in C:\Database\Scrambled.txt
It's so scrambled I can't tell if delimeter is Tab or Space. But nevermind,
all I need is to delete by rows, as mentioned above.

Thanks a lot

--
Edmund
(Using Excel XP)
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Manipulating Text File

If you're running xl2003 or below, then you won't be able to import all 130,000
rows.

Excel only has 65536 rows per worksheet.

If you could split up the data and import it multiple times, I'd add an extra
column and use a formula like:

=IF(MOD(INT((ROW()-1)/65),2)=1,"Delete","keep")

To mark each row.

====
Or you could use a macro to help clean up the data first.

Option Explicit
Sub testme01()

Dim TextLine As String
Dim recCtr As Long

recCtr = 0

'my test files
'Open "c:\my documents\excel\book4.txt" For Input As #1
'Open "c:\my documents\excel\book4.txt.out" For Output As #2

Open "C:\Database\Scrambled.txt" For Input As #1
Open "C:\Database\Scrambled.txt.out" For Output As #2

Do While Not EOF(1)
Line Input #1, TextLine
recCtr = recCtr + 1
If recCtr < 66 Then
Print #2, TextLine
Else
If recCtr 130 Then
recCtr = 0
End If
End If
Loop

Close #1
Close #2

End Sub

And import the data in scrambled.txt.out.

Edmund wrote:

I have a text file (*.txt) which contains 130,000 rows of records. Its
impossible for Excel to import in full. Even if I use MS Query to extract, it
is still not possible because its content is very abstract (combination of
table & words).

I understand Excel VBA can manipulate text files but I have no idea of how
to achieve the below.

Every 130 rows of record makes up 1 page (if I import to Excel). This means,
theres 1,000 pages in the entire 130,000 rows of records contained in this
text file. For each of the page, I only need its first upper half that is row
#1 to row row # 65. The VBA should delete row # 66 to row # 130 for every
page.

For example: my text file
row 1 ~ 65 (preserve)
row 66 ~ 130 (delete)
row 131 ~ 195 (preserve)
row 196 ~ 260 (delete)
row 261 ~ 325 (preserve)
row 326 ~ 390 (delete)
€¦..and so on.

My file is located in C:\Database\Scrambled.txt
It's so scrambled I can't tell if delimeter is Tab or Space. But nevermind,
all I need is to delete by rows, as mentioned above.

Thanks a lot

--
Edmund
(Using Excel XP)


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 145
Default Manipulating Text File

We like the way recCtr is used.

OP carefully limited entries to 130,000 and only wanted half of them
(65,000)
We would import direct into Excel thus

Sub M()
Dim txt As String
dim f as long
Dim i As Long
Dim j As Integer
i = 1
j = 1
f = FreeFile()
Open "C:\Data\file.txt" For Input As #f
Do While Not EOF
Line Input #f, txt
If (i - Int(i / 130) * 130) < 66 Then
Cells(j, 1) = txt
j = j + 1
End If
i = i + 1
Loop
close #f
End Sub

"Dave Peterson" wrote in message
...
If you're running xl2003 or below, then you won't be able to import all

130,000
rows.

Excel only has 65536 rows per worksheet.

If you could split up the data and import it multiple times, I'd add an

extra
column and use a formula like:

=IF(MOD(INT((ROW()-1)/65),2)=1,"Delete","keep")

To mark each row.

====
Or you could use a macro to help clean up the data first.

Option Explicit
Sub testme01()

Dim TextLine As String
Dim recCtr As Long

recCtr = 0

'my test files
'Open "c:\my documents\excel\book4.txt" For Input As #1
'Open "c:\my documents\excel\book4.txt.out" For Output As #2

Open "C:\Database\Scrambled.txt" For Input As #1
Open "C:\Database\Scrambled.txt.out" For Output As #2

Do While Not EOF(1)
Line Input #1, TextLine
recCtr = recCtr + 1
If recCtr < 66 Then
Print #2, TextLine
Else
If recCtr 130 Then
recCtr = 0
End If
End If
Loop

Close #1
Close #2

End Sub

And import the data in scrambled.txt.out.

Edmund wrote:

I have a text file (*.txt) which contains 130,000 rows of records.

It?Ts
impossible for Excel to import in full. Even if I use MS Query to

extract, it
is still not possible because its content is very abstract (combination

of
table & words).

I understand Excel VBA can manipulate text files but I have no idea of

how
to achieve the below.

Every 130 rows of record makes up 1 page (if I import to Excel). This

means,
there?Ts 1,000 pages in the entire 130,000 rows of records contained in

this
text file. For each of the page, I only need its first upper half that

is row
#1 to row row # 65. The VBA should delete row # 66 to row # 130 for

every
page.

For example: my text file
row 1 ~ 65 (preserve)
row 66 ~ 130 (delete)
row 131 ~ 195 (preserve)
row 196 ~ 260 (delete)
row 261 ~ 325 (preserve)
row 326 ~ 390 (delete)
?¦..and so on.

My file is located in C:\Database\Scrambled.txt
It's so scrambled I can't tell if delimeter is Tab or Space. But

nevermind,
all I need is to delete by rows, as mentioned above.

Thanks a lot

--
Edmund
(Using Excel XP)


--

Dave Peterson



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Manipulating Text File

But you'll still have to parse that data in column A.

And I think I'd stay away from "Dim j as Integer". I'd use "as Long".



PY & Associates wrote:

We like the way recCtr is used.

OP carefully limited entries to 130,000 and only wanted half of them
(65,000)
We would import direct into Excel thus

Sub M()
Dim txt As String
dim f as long
Dim i As Long
Dim j As Integer
i = 1
j = 1
f = FreeFile()
Open "C:\Data\file.txt" For Input As #f
Do While Not EOF
Line Input #f, txt
If (i - Int(i / 130) * 130) < 66 Then
Cells(j, 1) = txt
j = j + 1
End If
i = i + 1
Loop
close #f
End Sub

"Dave Peterson" wrote in message
...
If you're running xl2003 or below, then you won't be able to import all

130,000
rows.

Excel only has 65536 rows per worksheet.

If you could split up the data and import it multiple times, I'd add an

extra
column and use a formula like:

=IF(MOD(INT((ROW()-1)/65),2)=1,"Delete","keep")

To mark each row.

====
Or you could use a macro to help clean up the data first.

Option Explicit
Sub testme01()

Dim TextLine As String
Dim recCtr As Long

recCtr = 0

'my test files
'Open "c:\my documents\excel\book4.txt" For Input As #1
'Open "c:\my documents\excel\book4.txt.out" For Output As #2

Open "C:\Database\Scrambled.txt" For Input As #1
Open "C:\Database\Scrambled.txt.out" For Output As #2

Do While Not EOF(1)
Line Input #1, TextLine
recCtr = recCtr + 1
If recCtr < 66 Then
Print #2, TextLine
Else
If recCtr 130 Then
recCtr = 0
End If
End If
Loop

Close #1
Close #2

End Sub

And import the data in scrambled.txt.out.

Edmund wrote:

I have a text file (*.txt) which contains 130,000 rows of records.

It?Ts
impossible for Excel to import in full. Even if I use MS Query to

extract, it
is still not possible because its content is very abstract (combination

of
table & words).

I understand Excel VBA can manipulate text files but I have no idea of

how
to achieve the below.

Every 130 rows of record makes up 1 page (if I import to Excel). This

means,
there?Ts 1,000 pages in the entire 130,000 rows of records contained in

this
text file. For each of the page, I only need its first upper half that

is row
#1 to row row # 65. The VBA should delete row # 66 to row # 130 for

every
page.

For example: my text file
row 1 ~ 65 (preserve)
row 66 ~ 130 (delete)
row 131 ~ 195 (preserve)
row 196 ~ 260 (delete)
row 261 ~ 325 (preserve)
row 326 ~ 390 (delete)
?¦..and so on.

My file is located in C:\Database\Scrambled.txt
It's so scrambled I can't tell if delimeter is Tab or Space. But

nevermind,
all I need is to delete by rows, as mentioned above.

Thanks a lot

--
Edmund
(Using Excel XP)


--

Dave Peterson


--

Dave Peterson
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Manipulating ranges in a different file Lenchik Links and Linking in Excel 2 October 18th 08 04:01 AM
Manipulating ranges in a different excel file Lenchik Excel Worksheet Functions 3 October 13th 08 03:51 AM
Manipulating text file data Kingdbag Excel Programming 3 February 24th 06 02:38 PM
Manipulating text of an equation achidsey Excel Programming 1 September 13th 05 12:04 PM
Any help in manipulating text appreciated Ronl Excel Programming 1 November 1st 04 11:29 AM


All times are GMT +1. The time now is 03:57 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"