Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 193
Default Macro to copy cell contents number of columns

Am looking for a method to copy a cells contents a number of rows to
the right, that is defined by a number in an adjacent cell?
For instance:

In cell A1 is the number 5
In cell A2 is ABCD

I'd like ABCD to be copied to A7

If the value in cell A1 happens to be 4, the contents of A2 would be
copied to A6.

Its a head scratcher.

TIA for any thoughts.

Peter
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Macro to copy cell contents number of columns

Hi Pierre,

Assuming that "rows to the right" is a typo and that your examples represent
your intentions, try:

Set rng = Range("A2")
rng.Offset(rng(0).Value).Value = rng.Value

---
Regards,
Norman



"Pierre" wrote in message
om...
Am looking for a method to copy a cells contents a number of rows to
the right, that is defined by a number in an adjacent cell?
For instance:

In cell A1 is the number 5
In cell A2 is ABCD

I'd like ABCD to be copied to A7

If the value in cell A1 happens to be 4, the contents of A2 would be
copied to A6.

Its a head scratcher.

TIA for any thoughts.

Peter



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Macro to copy cell contents number of columns

Range(A2).Offset(Range("A1").Value,0).Value = Range("A2").Value

or for a general solution:

Dim rng as Range
Set rng = Range("A2")
rng.offset(rng.offset(-1,0).Value,0).Value = Rng.Value
I

--
Regards,
Tom Ogilvy

"Pierre" wrote in message
om...
Am looking for a method to copy a cells contents a number of rows to
the right, that is defined by a number in an adjacent cell?
For instance:

In cell A1 is the number 5
In cell A2 is ABCD

I'd like ABCD to be copied to A7

If the value in cell A1 happens to be 4, the contents of A2 would be
copied to A6.

Its a head scratcher.

TIA for any thoughts.

Peter



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Macro to copy cell contents number of columns


Thanks Tom and Norman

I feel about this tall. . .
One more time:

The contents of B1 should be copied the number of columns to the right
as specified in A1.

There. Sorry once again.

Thanks for your help.

PC



*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Macro to copy cell contents number of columns


You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6. If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Macro to copy cell contents number of columns

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value).Value = Rng.Value

Would offset the column.

You example is again about rows rather than columns, so if it is rows, the
see the original answer; If it is columns, then see this answer. If it
comes up one column short, then change it to

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value+1).Value = Rng.Value

--
Regards,
Tom Ogilvy


"Pierre C" wrote in message
...

You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6. If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 193
Default Macro to copy cell contents number of columns

Forgive the erroneous posts.

The macro isn't behaving as intended.


ie: The contents of 'column' B, would be copied X number of columns to
the right of column B. X is the value in the same row in column A.
This would apply to all entries in the entire column B. It may
contain up to 1000 items.

(Column A is a given level on the BOM. Column B is the item number.)
The intent is to create an indented bill of materials.

Thanks again for another look at it.

PC

"Tom Ogilvy" wrote in message ...
Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value).Value = Rng.Value

Would offset the column.

You example is again about rows rather than columns, so if it is rows, the
see the original answer; If it is columns, then see this answer. If it
comes up one column short, then change it to

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value+1).Value = Rng.Value

--
Regards,
Tom Ogilvy


"Pierre C" wrote in message
...

You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6. If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Macro to copy cell contents number of columns

Sub CreatedIndentedBOM()
Dim rng as Range, cell as Range
set rng = Range(Cells(2,2),Cells(rows.count,2).End(xlup))
for each cell in rng
if not isempty(cell) and cell.Offset(0,-1) 0 then
cell.offset(0,cell.offset(0,-1).Value).Value = cell.value
End if
Next
End Sub

--
Regards,
Tom Ogilvy

"Pierre" wrote in message
om...
Forgive the erroneous posts.

The macro isn't behaving as intended.


ie: The contents of 'column' B, would be copied X number of columns to
the right of column B. X is the value in the same row in column A.
This would apply to all entries in the entire column B. It may
contain up to 1000 items.

(Column A is a given level on the BOM. Column B is the item number.)
The intent is to create an indented bill of materials.

Thanks again for another look at it.

PC

"Tom Ogilvy" wrote in message

...
Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value).Value = Rng.Value

Would offset the column.

You example is again about rows rather than columns, so if it is rows,

the
see the original answer; If it is columns, then see this answer. If it
comes up one column short, then change it to

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value+1).Value = Rng.Value

--
Regards,
Tom Ogilvy


"Pierre C" wrote in message
...

You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6.

If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!



  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 193
Default Macro to copy cell contents number of columns

Tom, thank you so much for your reply. 2 thoughts on it:
I modified the code to begin at a particular cell reference. The
modified code follows. It works just fine, however one thing about
this code, is that if the value in the first column on the left is a
"1" (column C), the macro will stop after that cell with a "type
mismatch" error and cease at that point. Any thoughts on how to have
it continue?
Thanks again.
(modified code follows with a starting point in cell C5):

Sub CreatedIndentedBOM()
Dim rng As Range, cell As Range
Set rng = Range(Cells(3, 5), Cells(Rows.Count, 3).End(xlUp))
For Each cell In rng
If Not IsEmpty(cell) And cell.Offset(0, -1) 0 Then
cell.Offset(0, cell.Offset(0, -1).Value).Value = cell.Value
End If
Next
End Sub

"Tom Ogilvy" wrote in message ...
Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value).Value = Rng.Value

Would offset the column.

You example is again about rows rather than columns, so if it is rows, the
see the original answer; If it is columns, then see this answer. If it
comes up one column short, then change it to

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value+1).Value = Rng.Value

--
Regards,
Tom Ogilvy


"Pierre C" wrote in message
...

You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6. If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Macro to copy cell contents number of columns

Sub CreatedIndentedBOM()
Dim rng As Range, cell As Range
Set rng = Range(Cells(3, 5), Cells(Rows.Count, 3).End(xlUp))
For Each cell In rng
If Not IsEmpty(cell) And cell.Offset(0, -1) 0 Then
If isnumeric(cell.offset(0,-1)) then
cell.Offset(0, clng(cell.Offset(0, -1).Value)).Value = cell.Value
End if
End If
Next
End Sub

Perhaps.

You are looping though

C3:E20 if 20 is the last row occupied in column C as an example

Is that what you want?

--
Regards,
Tom Ogilvy


"Pierre" wrote in message
m...
Tom, thank you so much for your reply. 2 thoughts on it:
I modified the code to begin at a particular cell reference. The
modified code follows. It works just fine, however one thing about
this code, is that if the value in the first column on the left is a
"1" (column C), the macro will stop after that cell with a "type
mismatch" error and cease at that point. Any thoughts on how to have
it continue?
Thanks again.
(modified code follows with a starting point in cell C5):

Sub CreatedIndentedBOM()
Dim rng As Range, cell As Range
Set rng = Range(Cells(3, 5), Cells(Rows.Count, 3).End(xlUp))
For Each cell In rng
If Not IsEmpty(cell) And cell.Offset(0, -1) 0 Then
cell.Offset(0, cell.Offset(0, -1).Value).Value = cell.Value
End If
Next
End Sub

"Tom Ogilvy" wrote in message

...
Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value).Value = Rng.Value

Would offset the column.

You example is again about rows rather than columns, so if it is rows,

the
see the original answer; If it is columns, then see this answer. If it
comes up one column short, then change it to

Set rng = Range("A2")
rng.offset(0,rng.offset(-1,0).Value+1).Value = Rng.Value

--
Regards,
Tom Ogilvy


"Pierre C" wrote in message
...

You folks were right, it was a typo. I'd like to copy the data in A2,
"X" number of 'columns' to the right. "X" is a number entered in cell
A1.

If A1 is a 4, then the data appearing in A2 will also appear in A6.

If
A1 is a 3, the data appearing in A2 aill also appear in A5.

Sorry for the typo, and thank you for the responses.

PC




*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!





  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 193
Default Macro to copy cell contents number of columns

"Tom Ogilvy" wrote in message ...
Sub CreatedIndentedBOM()
Dim rng As Range, cell As Range
Set rng = Range(Cells(3, 5), Cells(Rows.Count, 3).End(xlUp))
For Each cell In rng
If Not IsEmpty(cell) And cell.Offset(0, -1) 0 Then
If isnumeric(cell.offset(0,-1)) then
cell.Offset(0, clng(cell.Offset(0, -1).Value)).Value = cell.Value
End if
End If
Next
End Sub

Perhaps.

You are looping though

C3:E20 if 20 is the last row occupied in column C as an example

Is that what you want?

--
Regards,
Tom Ogilvy

<snip


Tom, it works perfectly. You are a God!

PC
Thanks again.
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
Copy contents from one cell to another Don[_4_] New Users to Excel 0 September 25th 09 04:18 PM
how to copy the contents from last cell Lamb Chop Excel Discussion (Misc queries) 2 January 17th 08 01:27 AM
Macro to remove contents of cell and move all other contents up one row adw223 Excel Discussion (Misc queries) 1 July 1st 05 03:57 PM
Using VB copy contents of a macro to workbook jminu_2k Excel Programming 2 September 7th 04 10:11 AM
Copy cell contents into Macro code Bob Leonard Excel Programming 2 December 1st 03 07:29 PM


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