ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   RangeSize set by macro (https://www.excelbanter.com/excel-programming/322664-rangesize-set-macro.html)

CLR

RangeSize set by macro
 
Hi All.......

If someone would be so kind.....I am in need of a macro that will look to
A7, and then depending on how many consecutively populated cells are below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as RangeName
"Data3" from A7 whatever becomes the bottom end cell of "Data2"........when
I do this by recording, it just hard-codes the cells and does not allow if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3


Tom Ogilvy

RangeSize set by macro
 
set rng = Range(Range("A7"),Range("A7").End(xldown))
rng.name = "Data1"
rng.offset(0,1).name = "Data2"
rng.Resize(,2).name = "Data3"

I assume A and B will always end on the same row.

If that is not the case then:

set rng1 = Range(Range("A7"),Range("A7").End(xldown))
set rng2 = Range(Range("B7"),Range("B7").End(xldown))
set rng3 = Range(rng1, rng2)

rng1.Name = "Data1"
rng2.Name = "Data2"
rng3.Name = "Date3"

--
Regards,
Tom Ogilvy

"CLR" wrote in message
...
Hi All.......

If someone would be so kind.....I am in need of a macro that will look to
A7, and then depending on how many consecutively populated cells are below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as

RangeName
"Data3" from A7 whatever becomes the bottom end cell of

"Data2"........when
I do this by recording, it just hard-codes the cells and does not allow if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3




JE McGimpsey

RangeSize set by macro
 
You don't need programming, of course. It may be more efficient to use
dynamic ranges:

http://cpearson.com/excel/named.htm#Dynamic

But you can use something like:

Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp)).Name = "Data1"
Range(Cells(7, 2), Cells(Rows.Count, 2).End(xlUp)).Name = "Data2"
Cells(7, 1).Resize(Range("Data2").Rows.Count,2).Name = "Data3"

or a bit more efficiently

Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp)).Name = "Data1"
With Range(Cells(7, 2), Cells(Rows.Count, 2).End(xlUp))
.Name = "Data2"
Cells(7, 1).Resize(.Rows.Count,2).Name = "Data3"
End With




In article ,
CLR wrote:

Hi All.......

If someone would be so kind.....I am in need of a macro that will look to
A7, and then depending on how many consecutively populated cells are below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as RangeName
"Data3" from A7 whatever becomes the bottom end cell of "Data2"........when
I do this by recording, it just hard-codes the cells and does not allow if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3


sebastienm

RangeSize set by macro
 
If there is no empty cell within the data in column A, you coan define your
Named Ranges (menu Insert Name Define) as:
Assuming there are 3 non-empty cells in A1:A6 (if 5, then change the '3' in
into a 5 in the formulas)
Data1
=OFFSET($A$7,0,0,COUNTA($A:$A)-3,1)
Data2
=OFFSET($A$7,0,1,COUNTA($A:$A)-3,1)
Data3
=OFFSET($A$7,0,0,COUNTA($A:$A)-3,2)

These named ranges are dynamic, therefore update automatically when you add
or delete data.

Regards,
Sebastien
"CLR" wrote:

Hi All.......

If someone would be so kind.....I am in need of a macro that will look to
A7, and then depending on how many consecutively populated cells are below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as RangeName
"Data3" from A7 whatever becomes the bottom end cell of "Data2"........when
I do this by recording, it just hard-codes the cells and does not allow if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3


CLR

RangeSize set by macro
 
Thank you very much Tom......

Your code is exactly what I was looking for in this instance, and even more
to "grow on".

Vaya con Dios,
Chuck, CABGx3



"Tom Ogilvy" wrote:

set rng = Range(Range("A7"),Range("A7").End(xldown))
rng.name = "Data1"
rng.offset(0,1).name = "Data2"
rng.Resize(,2).name = "Data3"

I assume A and B will always end on the same row.

If that is not the case then:

set rng1 = Range(Range("A7"),Range("A7").End(xldown))
set rng2 = Range(Range("B7"),Range("B7").End(xldown))
set rng3 = Range(rng1, rng2)

rng1.Name = "Data1"
rng2.Name = "Data2"
rng3.Name = "Date3"

--
Regards,
Tom Ogilvy

"CLR" wrote in message
...
Hi All.......

If someone would be so kind.....I am in need of a macro that will look to
A7, and then depending on how many consecutively populated cells are below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as

RangeName
"Data3" from A7 whatever becomes the bottom end cell of

"Data2"........when
I do this by recording, it just hard-codes the cells and does not allow if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3





CLR

RangeSize set by macro
 
Thanks Sebastienm.............

I dunno what happened.........I know I wrote an answer to you before I left
work, but it's not showing up, so I guess the ether-gods ate
it...........anyway, it took several reads before I really understood what
you were suggesting, as the whole concept of putting formulas in as
reference for a RangeName is new to me. But cool it is, and most clever how
you accommodated my preferred range starting point of A7 rather than
A1.......... In the present case, Tom's code is what I went with, because
it worked and that was where my mindset was at the time, but I will for sure
keep this method in mind for the future........

Many thanks again............
Vaya con Dios,
Chuck, CABGx3


"sebastienm" wrote in message
...
If there is no empty cell within the data in column A, you coan define

your
Named Ranges (menu Insert Name Define) as:
Assuming there are 3 non-empty cells in A1:A6 (if 5, then change the '3'

in
into a 5 in the formulas)
Data1
=OFFSET($A$7,0,0,COUNTA($A:$A)-3,1)
Data2
=OFFSET($A$7,0,1,COUNTA($A:$A)-3,1)
Data3
=OFFSET($A$7,0,0,COUNTA($A:$A)-3,2)

These named ranges are dynamic, therefore update automatically when you

add
or delete data.

Regards,
Sebastien
"CLR" wrote:

Hi All.......

If someone would be so kind.....I am in need of a macro that will look

to
A7, and then depending on how many consecutively populated cells are

below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as

RangeName
"Data3" from A7 whatever becomes the bottom end cell of

"Data2"........when
I do this by recording, it just hard-codes the cells and does not allow

if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3




CLR

RangeSize set by macro
 
Thanks JE............

I went and read your reference on Chip's page and it's really unbelievable
how much more RangeNames can be used than what I was capable of. I've only
used them to reference cells, or groups of cells identified by their
row/column locations. Of course this suggestion is the way to go in the
future after I practice a bit. This time I went with Tom's code..........it
was there, and worked, and I sorta understood it.......three good things in
my book.

Thanks again for your response..........
Vaya con Dios,
Chuck, CABGx3






"JE McGimpsey" wrote in message
...
You don't need programming, of course. It may be more efficient to use
dynamic ranges:

http://cpearson.com/excel/named.htm#Dynamic

But you can use something like:

Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp)).Name = "Data1"
Range(Cells(7, 2), Cells(Rows.Count, 2).End(xlUp)).Name = "Data2"
Cells(7, 1).Resize(Range("Data2").Rows.Count,2).Name = "Data3"

or a bit more efficiently

Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp)).Name = "Data1"
With Range(Cells(7, 2), Cells(Rows.Count, 2).End(xlUp))
.Name = "Data2"
Cells(7, 1).Resize(.Rows.Count,2).Name = "Data3"
End With




In article ,
CLR wrote:

Hi All.......

If someone would be so kind.....I am in need of a macro that will look

to
A7, and then depending on how many consecutively populated cells are

below
it, create RangeName "Data1" of that size. Then do the same thing for
RangeName "Data2" starting at cell B7. Then, combine the two as

RangeName
"Data3" from A7 whatever becomes the bottom end cell of

"Data2"........when
I do this by recording, it just hard-codes the cells and does not allow

if
the range size changes.

Assuming Data in A7:B14, then

RangeName "Data1" would be assigned to A7:A14
RangeName "Data2" would be assigned to B7:B14
RangeName "Data3" would be assigned to A7:B14

TIA for any guidance.....
Vaya con Dios,
Chuck, CABGx3





All times are GMT +1. The time now is 04:40 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com