Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Macro for expanding a range

Hi,

I have ranges of numbers which are inconsistent and random; by this i mean
there is no logical order.

I have separated the numbers using a dash i.e (45678 - 45688)

I want excel to expand the range so that it displays 45678, 45679, 45680,
etc up to 45688. The ranges are all in one cell however there is hundreds of
cells all with different ranges.

Some of the ranges are split up by single numbers to give an example ( 45678
- 45688; 45690; 45693 - 45699) it is important i only get the ranges
separated by dashes not the entire range.

I would like excel to convert the range and expand it into the same cell as
the single numbers with a preference for numerical ordering

Any help or assistance is greatly appreciated; i don't want to write this
out by hand if possible.

Ian
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Macro for expanding a range

Try this code. the code take data from column A. Change as necessary. the
code will also stop if there are any empty cells in column A

Sub test3()

RowCount = 1
Do While Range("A" & RowCount) < ""
If InStr(Range("A" & RowCount), "-") 0 Then
CellStr = Range("A" & RowCount)
NewStr = ""
Do While CellStr < ""
If InStr(CellStr, ";") 0 Then
FirstPart = Trim(Left(CellStr, InStr(CellStr, ";") - 1))
CellStr = Trim(Mid(CellStr, InStr(CellStr, ";") + 1))
Else
FirstPart = CellStr
CellStr = ""
End If
If NewStr < "" Then
NewStr = NewStr & "; "
End If
If InStr(FirstPart, "-") 0 Then
FirstNum = Val(Trim(Left(FirstPart, InStr(FirstPart, "-") - 1)))
LastNum = Val(Trim(Mid(FirstPart, InStr(FirstPart, "-") + 1)))
For NumCount = FirstNum To LastNum
If NumCount < FirstNum Then
NewStr = NewStr & ", " & NumCount
Else
NewStr = NewStr & NumCount
End If
Next NumCount
Else
NewStr = NewStr & FirstPart
End If
Loop
Range("A" & RowCount) = NewStr
End If
RowCount = RowCount + 1
Loop

End Sub

"Macca1984" wrote:

Hi,

I have ranges of numbers which are inconsistent and random; by this i mean
there is no logical order.

I have separated the numbers using a dash i.e (45678 - 45688)

I want excel to expand the range so that it displays 45678, 45679, 45680,
etc up to 45688. The ranges are all in one cell however there is hundreds of
cells all with different ranges.

Some of the ranges are split up by single numbers to give an example ( 45678
- 45688; 45690; 45693 - 45699) it is important i only get the ranges
separated by dashes not the entire range.

I would like excel to convert the range and expand it into the same cell as
the single numbers with a preference for numerical ordering

Any help or assistance is greatly appreciated; i don't want to write this
out by hand if possible.

Ian

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Macro for expanding a range

Thanks for the code; i run it and recieved a

run-time error '7':

Out of memory, closed all non essential programs any further suggestions?
Will it affect the code if there is no range only a single number i.e 75000?


"Joel" wrote:

Try this code. the code take data from column A. Change as necessary. the
code will also stop if there are any empty cells in column A

Sub test3()

RowCount = 1
Do While Range("A" & RowCount) < ""
If InStr(Range("A" & RowCount), "-") 0 Then
CellStr = Range("A" & RowCount)
NewStr = ""
Do While CellStr < ""
If InStr(CellStr, ";") 0 Then
FirstPart = Trim(Left(CellStr, InStr(CellStr, ";") - 1))
CellStr = Trim(Mid(CellStr, InStr(CellStr, ";") + 1))
Else
FirstPart = CellStr
CellStr = ""
End If
If NewStr < "" Then
NewStr = NewStr & "; "
End If
If InStr(FirstPart, "-") 0 Then
FirstNum = Val(Trim(Left(FirstPart, InStr(FirstPart, "-") - 1)))
LastNum = Val(Trim(Mid(FirstPart, InStr(FirstPart, "-") + 1)))
For NumCount = FirstNum To LastNum
If NumCount < FirstNum Then
NewStr = NewStr & ", " & NumCount
Else
NewStr = NewStr & NumCount
End If
Next NumCount
Else
NewStr = NewStr & FirstPart
End If
Loop
Range("A" & RowCount) = NewStr
End If
RowCount = RowCount + 1
Loop

End Sub

"Macca1984" wrote:

Hi,

I have ranges of numbers which are inconsistent and random; by this i mean
there is no logical order.

I have separated the numbers using a dash i.e (45678 - 45688)

I want excel to expand the range so that it displays 45678, 45679, 45680,
etc up to 45688. The ranges are all in one cell however there is hundreds of
cells all with different ranges.

Some of the ranges are split up by single numbers to give an example ( 45678
- 45688; 45690; 45693 - 45699) it is important i only get the ranges
separated by dashes not the entire range.

I would like excel to convert the range and expand it into the same cell as
the single numbers with a preference for numerical ordering

Any help or assistance is greatly appreciated; i don't want to write this
out by hand if possible.

Ian

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Macro for expanding a range

The code only changes cells where it finds a dash (see line below). I don't
know if you made any changes to the code. The code was written to move down
column A on the active worksheet. If you changed the code to a differrent
column make sure you change ALL these places where the code looks at column A.

Run time error sounds like the code is in some loop. or it is finding a very
long string of data. In excel 2003 ther is a limit of 16K of data in a
single cell. If your range of numbers is very long maybe it is exceeding the
number of characters in a cell.

Instruction which checks for a dash in the cell.
If InStr(Range("A" & RowCount), "-") 0

"Macca1984" wrote:

Thanks for the code; i run it and recieved a

run-time error '7':

Out of memory, closed all non essential programs any further suggestions?
Will it affect the code if there is no range only a single number i.e 75000?


"Joel" wrote:

Try this code. the code take data from column A. Change as necessary. the
code will also stop if there are any empty cells in column A

Sub test3()

RowCount = 1
Do While Range("A" & RowCount) < ""
If InStr(Range("A" & RowCount), "-") 0 Then
CellStr = Range("A" & RowCount)
NewStr = ""
Do While CellStr < ""
If InStr(CellStr, ";") 0 Then
FirstPart = Trim(Left(CellStr, InStr(CellStr, ";") - 1))
CellStr = Trim(Mid(CellStr, InStr(CellStr, ";") + 1))
Else
FirstPart = CellStr
CellStr = ""
End If
If NewStr < "" Then
NewStr = NewStr & "; "
End If
If InStr(FirstPart, "-") 0 Then
FirstNum = Val(Trim(Left(FirstPart, InStr(FirstPart, "-") - 1)))
LastNum = Val(Trim(Mid(FirstPart, InStr(FirstPart, "-") + 1)))
For NumCount = FirstNum To LastNum
If NumCount < FirstNum Then
NewStr = NewStr & ", " & NumCount
Else
NewStr = NewStr & NumCount
End If
Next NumCount
Else
NewStr = NewStr & FirstPart
End If
Loop
Range("A" & RowCount) = NewStr
End If
RowCount = RowCount + 1
Loop

End Sub

"Macca1984" wrote:

Hi,

I have ranges of numbers which are inconsistent and random; by this i mean
there is no logical order.

I have separated the numbers using a dash i.e (45678 - 45688)

I want excel to expand the range so that it displays 45678, 45679, 45680,
etc up to 45688. The ranges are all in one cell however there is hundreds of
cells all with different ranges.

Some of the ranges are split up by single numbers to give an example ( 45678
- 45688; 45690; 45693 - 45699) it is important i only get the ranges
separated by dashes not the entire range.

I would like excel to convert the range and expand it into the same cell as
the single numbers with a preference for numerical ordering

Any help or assistance is greatly appreciated; i don't want to write this
out by hand if possible.

Ian

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
Expanding Range in Formula? John Sofillas Excel Discussion (Misc queries) 4 August 6th 09 01:26 PM
Expanding a named range [email protected] Excel Programming 1 March 21st 07 07:46 PM
Expanding a range Oldjay Excel Programming 2 November 10th 06 06:08 PM
expanding a range of numbers chchch Excel Discussion (Misc queries) 1 February 28th 06 07:51 PM
Auto expanding Range [email protected] Excel Programming 5 September 30th 05 07:27 PM


All times are GMT +1. The time now is 08:10 AM.

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

About Us

"It's about Microsoft Excel"