LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 29
Default Data Formatting & Parsing

Thanks for the examples. I really like getting VB code because I am
not very good with VB coding. One problem I was having is that I
wasn't sure how many different ID types there were (it is a many
thousand line file). So I am not sure if ID, STID, PHONE were the only
codes I needed to screen for. I ended up looking for a comman in
column one to determine where new records started. So first I used
this formula to screen for new records
=IF(ISERROR(FIND(",",A1,1)0),"","new")

Then a few columns over I added another formula to combine the various
record parts into one text string delimted by a : so I could seperate
out the data elements into individual columns. It uses the above
formula to determine where to start and end new records
=IF(K2="new",A2,IF(OR(A2="",B2=""),L1,L1&":"&B2))

I had a lot of issues trying to only get the : in between "fields" but
the above formula that screens for blank lines and blank data seemed to
prevent me from getting ::: in the text string. So then, I knew the
lline right before the new row contained all the data for one record,
so I only kept the last line. I then used text to column to seperate
out based on :. It seemed to work out, but it certainly isn't pretty.

Anyone else have other ideas on how to handle this?
-Andrew V. Romero

moon wrote:
this is faster...

Do While TXT.AtEndOfStream < True
line = TXT.ReadLine
If line < "" And Left(line, 2) < "ID" And Left(line, 5) < "Phone"
And Left(line, 4) < "StId" Then
ws.Cells(r, 1).Value = line
r = r + 1
ElseIf Left(line, 2) = "ID" Then
ws.Cells(r - 1, 2).Value = Mid(line, 6, Len(line) - 2)
ElseIf Left(line, 4) = "StId" Then
ws.Cells(r - 1, 3).Value = Mid(line, 8, Len(line) - 2)
ElseIf Left(line, 5) = "Phone" Then
ws.Cells(r - 1, 4).Value = Mid(line, 9, Len(line) - 2)
End If
Loop



"moon" schreef in bericht
. ..

In Sheet1, A1: Name, B1: ID, C1: StId, D1: Phone

Private Sub WorksheetButtonImport_Click()
Const FOR_READING = 1
Dim wb As Workbook
Dim ws As Worksheet
Dim FSO, TXT
Dim r, s As Integer
Dim line As String
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TXT = FSO.OpenTextFile("sample.txt", FOR_READING, True)
ws.Activate
r = 1
ws.Cells(r, 1).Select
While Len(ActiveCell.Value) 0
r = r + 1
ws.Cells(r, 1).Select
Wend
Do While TXT.AtEndOfStream < True
line = TXT.ReadLine
If line < "" And Left(line, 2) < "ID" And Left(line, 5) <
"Phone" And Left(line, 4) < "StId" Then
ws.Cells(r, 1).Value = line
r = r + 1
ElseIf Left(line, 2) = "ID" Then
For s = 1 To Len(line)
If Mid(line, s, 1) = "|" Then
ws.Cells(r - 1, 2).Value = Right(line, s)
Exit For
End If
Next s
ElseIf Left(line, 4) = "StId" Then
For s = 1 To Len(line)
If Mid(line, s, 1) = "|" Then
ws.Cells(r - 1, 3).Value = Right(line, s)
Exit For
End If
Next s
ElseIf Left(line, 5) = "Phone" Then
For s = 1 To Len(line)
If Mid(line, s, 1) = "|" Then
ws.Cells(r - 1, 4).Value = Right(line, s)
Exit For
End If
Next s
End If
Loop
TXT.Close
Set ws = Nothing
Set wb = Nothing
Set TXT = Nothing
Set FSO = Nothing
End Sub








schreef in bericht
oups.com...
I have an ugly import file that I am trying to fix up so that I can
actually use it. The format looks like (the | is a new new)

Doe, John

ID | 1234
Phone | 5551234567

Smith, Adam

ID | 4567

Doe, Jane

ID | 4444
StId | 12345
Phone | 4444444444

etc

I would like to make this a more standard format with the data in
columns (Doe | John | 1234 | 5551234567) and am wondering how other
people would do this? My original idea was to see if the string had a
comma, if so append the cells above that...something like
=if(find(a2,",")1, a2, a1&":"&a2). In theory that should give me a
long text string sepearted by :, then I can do text to column. In
reality, I am having problems making this work, plus it is sort of ugly
because then I have to figure out which text strings contain all the
data. Surely there must be a better way to do this. How would you do
this?

-Andrew V. Romero




 
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
Parsing Data with Javier Excel Discussion (Misc queries) 0 June 27th 06 06:21 PM
parsing data - formatting issue terri Excel Discussion (Misc queries) 11 March 6th 06 03:43 PM
Help With Parsing Data Saxman Excel Discussion (Misc queries) 5 December 27th 05 02:39 PM
Parsing Data Amit Excel Programming 1 February 13th 04 07:32 PM
Parsing Data MGAL Excel Programming 5 January 20th 04 03:08 AM


All times are GMT +1. The time now is 10:29 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"