#1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default Copy range

I have a list in excel that is automatically populated. In column A I
have values like:

A1: Test_2006_17_1
A2: _2
A3: _3
A4: _4
A5: Test_2006_18_1
A6 _2
A7 _4
A8 _5
A9 Test_2006_19_2
A10: _7
A11: _9

1.What I need is a vb script that runs through the values in columns A
2.Looks for a value that does not start with "Test" (in this case the
first value to be found will be _2), goes 1 cell up until the cell is
found which starts with Test
3. change the value (in this case _2) with the value that has been
found in step 2 while deleting the last 2 positions (in this case _1).
The result in cell A2 will be Test_2006_17_2, in cell A3 Test_2006_17_3
etc.

Should be simple, but my vba knowlegde does not go that far
unfortunately.

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 422
Default Copy range

Give this a try:

Sub Foo()
Dim Temp As String
Range("A1").CurrentRegion.Select
For Each c In Selection
If Left(c, 4) = "Test" Then
Temp = Left(c, 12)
End If
If Left(c, 1) = "_" Then
c.Value = Temp & c
End If
Next c
End Sub

HTH,
Jim May

"Ixtreme" wrote in message
ups.com:

I have a list in excel that is automatically populated. In column A I
have values like:

A1: Test_2006_17_1
A2: _2
A3: _3
A4: _4
A5: Test_2006_18_1
A6 _2
A7 _4
A8 _5
A9 Test_2006_19_2
A10: _7
A11: _9

1.What I need is a vb script that runs through the values in columns A
2.Looks for a value that does not start with "Test" (in this case the
first value to be found will be _2), goes 1 cell up until the cell is
found which starts with Test
3. change the value (in this case _2) with the value that has been
found in step 2 while deleting the last 2 positions (in this case _1).
The result in cell A2 will be Test_2006_17_2, in cell A3 Test_2006_17_3
etc.

Should be simple, but my vba knowlegde does not go that far
unfortunately.


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default Copy range

Hi Jim,

thanks for your quick reply. That did the trick !

Thanks!

Mark

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default Copy range


I have another vba question: In column A there are rows that are
populated and rows that are not.

I want the empty cells to look up and copy the first non empty cell
value to the specific cell.

A1: Test
A2:
A3
A4
A5 Bla Bla
A6
A7

The code should give: A2, A3 and A4 to be "Test" as well and A6 and A7
to be "BLa Bla"

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Copy range

You need to modify the function a little bit to do what you want
Try this.
Sub Foo2()
Dim Temp As String
Dim c As Range

'Change A50 to whatever..
For Each c In Range("A1:A50")
If c.Value < "" Then
Temp = c.Value
End If
If c.Value = "" Then
c.Value = Temp
End If
Next c
End Sub


"Ixtreme" wrote:


I have another vba question: In column A there are rows that are
populated and rows that are not.

I want the empty cells to look up and copy the first non empty cell
value to the specific cell.

A1: Test
A2:
A3
A4
A5 Bla Bla
A6
A7

The code should give: A2, A3 and A4 to be "Test" as well and A6 and A7
to be "BLa Bla"




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Copy range

There is anothe way of doing what you want. It uses the formulas.

1. Highlight the range of cells Including blank cells. For example highlight
A1:A50
2. Select all blank cells by F5(Goto)/Special../Blanks
3. Now consider the first blank cell. If the first blank cell is A2 then
type =A1, if the first blank cell is A3 then type =A2 etc.
4. Instead of pressing Enter, press Control-Enter. Control Enter places
similar formula in all cells (that is it adjust the formula appropriately)

"Ixtreme" wrote:


I have another vba question: In column A there are rows that are
populated and rows that are not.

I want the empty cells to look up and copy the first non empty cell
value to the specific cell.

A1: Test
A2:
A3
A4
A5 Bla Bla
A6
A7

The code should give: A2, A3 and A4 to be "Test" as well and A6 and A7
to be "BLa Bla"


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Copy range

Hi Ixtreme,
Jim's reply will work in all cases where the number xx in Test_2006_xx_1 is
a two digit number. It does not work if the number is a single digit or a
three digit number
I would suggest replacing the following line
Temp = Left(c, 12)
with
Temp = Left(c, InStrRev(c, "_") - 1)

"Ixtreme" wrote:

Hi Jim,

thanks for your quick reply. That did the trick !

Thanks!

Mark


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
RANGE EXCEL copy cell that meets criteria in a range confused Excel Worksheet Functions 3 March 27th 08 01:41 PM
copy formulas from a contiguous range to a safe place and copy them back later Lucas Budlong Excel Programming 2 February 22nd 06 08:26 PM
Create/copy combo boxes in one range if condition is met in a different range LB[_4_] Excel Programming 4 September 30th 05 12:21 AM
Code to copy range vs Copy Entire Worksheet - can't figure it out Mike Taylor Excel Programming 1 April 15th 04 08:34 PM
Range COPY function - how to copy VALUES and not formulas James Cooke Excel Programming 1 August 21st 03 07:04 PM


All times are GMT +1. The time now is 05:52 AM.

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"