ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   creating a range by searching another worksheet (https://www.excelbanter.com/excel-programming/299667-creating-range-searching-another-worksheet.html)

Rich Cooper

creating a range by searching another worksheet
 
I am trying to build a range by having a procedure go through a range. I
have a range of markets. The range is column A. In column A at the very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will be ("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get the
procedure to go throught the range. Any help on how to do this is greatly
appreciated.



Frank Kabel

creating a range by searching another worksheet
 
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
I am trying to build a range by having a procedure go through a

range. I
have a range of markets. The range is column A. In column A at the

very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will be

("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get the
procedure to go throught the range. Any help on how to do this is

greatly
appreciated.




Tom Ogilvy

creating a range by searching another worksheet
 
Sub Tester1()
Dim varr() As String
Dim bUnique As Boolean, sStr As String
Dim cell As Range, rng As Range
Dim i As Long, idex As Long
ReDim varr(0 To 0)
Set rng = Range(Cells(1, 1), Cells(1, 1).End(xlDown))
idex = 0
For Each cell In rng
sStr = Left(cell.Value, 2)
bUnique = True
For i = LBound(varr) To UBound(varr)
If UCase(sStr) = UCase(varr(i)) Then
bUnique = False
Exit For
End If
Next
If bUnique Then
varr(idex) = sStr
idex = idex + 1
ReDim Preserve varr(0 To idex)
End If
Next
ReDim Preserve varr(0 To idex - 1)
For i = LBound(varr) To UBound(varr)
Debug.Print i, varr(i)
Next

End Sub


You can also do this using a collection as illustrated by John Walkenbach:

http://j-walk.com/ss/excel/tips/tip47.htm
Filling a ListBox With Unique Items

While the sample code fills a listbox, that is only a small part of the code
at the bottom. Most of the code is focused on getting a unique list (and
then sorting it - you can leave that part of the code or keep it according
to your needs).

--
Regards,
Tom Ogilvy




"Rich Cooper" wrote in message
...
I am trying to build a range by having a procedure go through a range. I
have a range of markets. The range is column A. In column A at the very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will be ("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get the
procedure to go throught the range. Any help on how to do this is greatly
appreciated.





Rich Cooper

creating a range by searching another worksheet
 
Frank
Thats helping alot but i am running into some problems. Hopefully you can
help. I want the row it starts at to be M1P1 and in the array i want it tp
only count M1 once. SO the final array should look like this if i only have
a list that goes up to M4P4. ar_values("m1","m2","m3"m4") Hope that makes
it a little clear what i am trying to do.

"Frank Kabel" wrote in message
...
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
I am trying to build a range by having a procedure go through a

range. I
have a range of markets. The range is column A. In column A at the

very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will be

("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get the
procedure to go throught the range. Any help on how to do this is

greatly
appreciated.






Frank Kabel

creating a range by searching another worksheet
 
Hi
some questions
- is your data sorted
- does it start in a fixed row

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Frank
Thats helping alot but i am running into some problems. Hopefully

you can
help. I want the row it starts at to be M1P1 and in the array i want

it tp
only count M1 once. SO the final array should look like this if i

only have
a list that goes up to M4P4. ar_values("m1","m2","m3"m4") Hope that

makes
it a little clear what i am trying to do.

"Frank Kabel" wrote in message
...
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
I am trying to build a range by having a procedure go through a

range. I
have a range of markets. The range is column A. In column A at

the
very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will

be
("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get

the
procedure to go throught the range. Any help on how to do this

is
greatly
appreciated.







Tom Ogilvy

creating a range by searching another worksheet
 
You can also do this using a collection as illustrated by John Walkenbach:

http://j-walk.com/ss/excel/tips/tip47.htm
Filling a ListBox With Unique Items

While the sample code fills a listbox, that is only a small part of the code
at the bottom. Most of the code is focused on getting a unique list (and
then sorting it

Do you mean you want it to search down the column until it finds the first
instance of M1P1 and then start there?

--
Regards,
Tom Ogilvy

"Rich Cooper" wrote in message
...
Frank
Thats helping alot but i am running into some problems. Hopefully you can
help. I want the row it starts at to be M1P1 and in the array i want it

tp
only count M1 once. SO the final array should look like this if i only

have
a list that goes up to M4P4. ar_values("m1","m2","m3"m4") Hope that

makes
it a little clear what i am trying to do.

"Frank Kabel" wrote in message
...
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
I am trying to build a range by having a procedure go through a

range. I
have a range of markets. The range is column A. In column A at the

very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that will be

("m1",
"m2", "m3"...) but i am having trouble doing this. I can't get the
procedure to go throught the range. Any help on how to do this is

greatly
appreciated.








Frank Kabel

creating a range by searching another worksheet
 
Hi
NEVER attach a file to this newsgroup:
- uses too much bandwith
- most people (like me) won't open these attachments or will simply
ignore such posts
- almost never required
- could contain viruses
- etc.

Try posting some example data as PLAIN text

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Frank here is what the data looks like

"Frank Kabel" wrote in message
...
Hi
some questions
- is your data sorted
- does it start in a fixed row

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Frank
Thats helping alot but i am running into some problems.

Hopefully
you can
help. I want the row it starts at to be M1P1 and in the array i

want
it tp
only count M1 once. SO the final array should look like this if

i
only have
a list that goes up to M4P4. ar_values("m1","m2","m3"m4") Hope

that
makes
it a little clear what i am trying to do.

"Frank Kabel" wrote in message
...
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im

Newsbeitrag
...
I am trying to build a range by having a procedure go through

a
range. I
have a range of markets. The range is column A. In column A

at
the
very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that

will
be
("m1",
"m2", "m3"...) but i am having trouble doing this. I can't

get
the
procedure to go throught the range. Any help on how to do

this
is
greatly
appreciated.











Rich Cooper

creating a range by searching another worksheet
 
Sorry about that here is what the data looks like then. I didn't know about
attaching the file. I am sorry. MNTH1

MNTH2

QTR1

QTR2

YTD1

YTD2

MKT1

MKT2

M1P16

M1P17

M1P18

M1P19

M1P20

M1P21

M2P1

M2P2

M2P3

M3P4

M3P5

M3P6

M4P1

M4P2

M4P3

M4P4


"Frank Kabel" wrote in message
...
Hi
NEVER attach a file to this newsgroup:
- uses too much bandwith
- most people (like me) won't open these attachments or will simply
ignore such posts
- almost never required
- could contain viruses
- etc.

Try posting some example data as PLAIN text

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Frank here is what the data looks like

"Frank Kabel" wrote in message
...
Hi
some questions
- is your data sorted
- does it start in a fixed row

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Frank
Thats helping alot but i am running into some problems.

Hopefully
you can
help. I want the row it starts at to be M1P1 and in the array i

want
it tp
only count M1 once. SO the final array should look like this if

i
only have
a list that goes up to M4P4. ar_values("m1","m2","m3"m4") Hope

that
makes
it a little clear what i am trying to do.

"Frank Kabel" wrote in message
...
Hi
try the following (not fully tested)
sub test_rng
dim ar_values as variant
Dim RowNdx As Long
Dim LastRow As Long
dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
redim ar_values(1 to lastrow)
i=0

For RowNdx = 1 To lastrow
with Cells(RowNdx, "A")
if left(.value,1)="M" then
i=i+1
ar_values(i)=left(.value,2)
end if
end with
Next RowNdx
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im

Newsbeitrag
...
I am trying to build a range by having a procedure go through

a
range. I
have a range of markets. The range is column A. In column A

at
the
very
top you have some summary information then you have M1P1,
M1p2...M2p2...M3p5... I am trying to create an array that

will
be
("m1",
"m2", "m3"...) but i am having trouble doing this. I can't

get
the
procedure to go throught the range. Any help on how to do

this
is
greatly
appreciated.













Frank Kabel

creating a range by searching another worksheet
 
Hi
try:
Sub test_rng()
Dim ar_values As Variant
Dim RowNdx As Long
Dim LastRow As Long
Dim FirstRow As Long
Dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
ReDim ar_values(1 To LastRow)
i = 0

For RowNdx = 1 To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 2) = "M1" Then
FirstRow = RowNnx
Exit For
End If
End With
Next
For RowNdx = FirstRow To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 1) = "M" And _
--Mid(.Value, 2, 1) i Then
i = i + 1
ar_values(i) = Left(.Value, 2)
End If
End With
Next RowNdx
End Sub

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Sorry about that here is what the data looks like then. I didn't know

about
attaching the file. I am sorry. MNTH1



Rich Cooper

creating a range by searching another worksheet
 
Hey frank i am still haveing trouble with that array

this is what i got so far

Dim LastRow As Integer
Dim FirstRow As Integer
Dim rowndx As Integer

Sub findrows()
'Dim LastRow As Integer
'Dim FirstRow As Integer
Dim i As Integer
Dim x As Integer
Dim a As Integer
Dim b As Integer
Dim mearray() As String
ReDim mearray(10)
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
i = 1
x = 1
For rowndx = 1 To LastRow
If Left(Cells(rowndx, "A").Value, 1) = "M" And Mid(Cells(rowndx,
"A").Value, 2, 1) = x Then
FirstRow = rowndx
mearray(a) = Left(Cells(rowndx, "A").Value, 2)
Exit For
x = x + 1
End If
Next rowndx
"Frank Kabel" wrote in message
...
Hi
try:
Sub test_rng()
Dim ar_values As Variant
Dim RowNdx As Long
Dim LastRow As Long
Dim FirstRow As Long
Dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
ReDim ar_values(1 To LastRow)
i = 0

For RowNdx = 1 To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 2) = "M1" Then
FirstRow = RowNnx
Exit For
End If
End With
Next
For RowNdx = FirstRow To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 1) = "M" And _
--Mid(.Value, 2, 1) i Then
i = i + 1
ar_values(i) = Left(.Value, 2)
End If
End With
Next RowNdx
End Sub

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Sorry about that here is what the data looks like then. I didn't know

about
attaching the file. I am sorry. MNTH1





Frank Kabel

creating a range by searching another worksheet
 
Hi
I've replied to you via private email

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Hey frank i am still haveing trouble with that array

this is what i got so far

Dim LastRow As Integer
Dim FirstRow As Integer
Dim rowndx As Integer

Sub findrows()
'Dim LastRow As Integer
'Dim FirstRow As Integer
Dim i As Integer
Dim x As Integer
Dim a As Integer
Dim b As Integer
Dim mearray() As String
ReDim mearray(10)
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
i = 1
x = 1
For rowndx = 1 To LastRow
If Left(Cells(rowndx, "A").Value, 1) = "M" And

Mid(Cells(rowndx,
"A").Value, 2, 1) = x Then
FirstRow = rowndx
mearray(a) = Left(Cells(rowndx, "A").Value, 2)
Exit For
x = x + 1
End If
Next rowndx
"Frank Kabel" wrote in message
...
Hi
try:
Sub test_rng()
Dim ar_values As Variant
Dim RowNdx As Long
Dim LastRow As Long
Dim FirstRow As Long
Dim i

LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).row
ReDim ar_values(1 To LastRow)
i = 0

For RowNdx = 1 To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 2) = "M1" Then
FirstRow = RowNnx
Exit For
End If
End With
Next
For RowNdx = FirstRow To LastRow
With Cells(RowNdx, "A")
If Left(.Value, 1) = "M" And _
--Mid(.Value, 2, 1) i Then
i = i + 1
ar_values(i) = Left(.Value, 2)
End If
End With
Next RowNdx
End Sub

--
Regards
Frank Kabel
Frankfurt, Germany

"Rich Cooper" schrieb im Newsbeitrag
...
Sorry about that here is what the data looks like then. I didn't

know
about
attaching the file. I am sorry. MNTH1







All times are GMT +1. The time now is 09:04 AM.

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