Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 14
Default Row parts and range confusion

Hi using matching to identify a particular cell, I want to search and sum the
range of the contents of a cell - in a different column for the same row.

e.g. I want to sum the range contained in cell H36 - e.g. "query!$M$2$M13$'
and I have already found the matching row by locating the single range cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of B36) and then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function



  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Row parts and range confusion

if rng2 is B36

and H36 contains the string "query!M2:M13" without the double quotes, then

Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

would evaluate to

Total =
Application.WorksheetFunction.Sum(rng2.parentRange ("query!M2:M13").Value)

If rng2 is in sheet query (which it appears it isn't), then that should
work. If it isn't, then you need to change the code to

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

Cell H36 didn't contain a sheet name when this was written.

--
Regards,
Tom Ogilvy



"Jello" wrote in message
...
Hi using matching to identify a particular cell, I want to search and sum

the
range of the contents of a cell - in a different column for the same row.

e.g. I want to sum the range contained in cell H36 - e.g.

"query!$M$2$M13$'
and I have already found the matching row by locating the single range

cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of B36) and

then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function





  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 14
Default Row parts and range confusion

Dear Tom,

Thanks for the reply.
I think this is probably my fault again in that I wonder if it is because
the reference to column "H" is on another sheet named calc, the same sheet
where we got the search range info via Set rng = Range("calc!B10") '
Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched


So I have:
rng2 is B36 value but on sheet 'calc' and = "Michael Adams UK"
H36 contains the string "query!M2:M13" without the double quotes
BUT AGAIN THIS CELL IS ON SHEET 'calc' !

Is that why it fails when you say:
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

as it is expecting column H from the active sheet ? I assigned a macro to my
function "regionTotal" in a cell on another sheet !
If this is the case is there any way round this ?
I am currently experimenting with how to set ranges....

Apologies if that was crucial.
Many thanks,
Jello


"Tom Ogilvy" wrote:

if rng2 is B36

and H36 contains the string "query!M2:M13" without the double quotes, then

Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

would evaluate to

Total =
Application.WorksheetFunction.Sum(rng2.parentRange ("query!M2:M13").Value)

If rng2 is in sheet query (which it appears it isn't), then that should
work. If it isn't, then you need to change the code to

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

Cell H36 didn't contain a sheet name when this was written.

--
Regards,
Tom Ogilvy



"Jello" wrote in message
...
Hi using matching to identify a particular cell, I want to search and sum

the
range of the contents of a cell - in a different column for the same row.

e.g. I want to sum the range contained in cell H36 - e.g.

"query!$M$2$M13$'
and I have already found the matching row by locating the single range

cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of B36) and

then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function






  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Row parts and range confusion

If your not doing this in a sheet module then you can do

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

like I said in my previous response.

If it is in a sheet module then do

Total = Application.WorksheetFunction.Sum(Worksheets("quer y").Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)


But this limits the flexibility of this approach.

Yes, what you said and which is what i previously said, is the problem.

--
Regards,
Tom Ogilvy


"Jello" wrote in message
...
Dear Tom,

Thanks for the reply.
I think this is probably my fault again in that I wonder if it is because
the reference to column "H" is on another sheet named calc, the same sheet
where we got the search range info via Set rng = Range("calc!B10") '
Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched


So I have:
rng2 is B36 value but on sheet 'calc' and = "Michael Adams UK"
H36 contains the string "query!M2:M13" without the double quotes
BUT AGAIN THIS CELL IS ON SHEET 'calc' !

Is that why it fails when you say:
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

as it is expecting column H from the active sheet ? I assigned a macro to

my
function "regionTotal" in a cell on another sheet !
If this is the case is there any way round this ?
I am currently experimenting with how to set ranges....

Apologies if that was crucial.
Many thanks,
Jello


"Tom Ogilvy" wrote:

if rng2 is B36

and H36 contains the string "query!M2:M13" without the double quotes,

then

Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

would evaluate to

Total =

Application.WorksheetFunction.Sum(rng2.parentRange ("query!M2:M13").Value)

If rng2 is in sheet query (which it appears it isn't), then that should
work. If it isn't, then you need to change the code to

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

Cell H36 didn't contain a sheet name when this was written.

--
Regards,
Tom Ogilvy



"Jello" wrote in message
...
Hi using matching to identify a particular cell, I want to search and

sum
the
range of the contents of a cell - in a different column for the same

row.

e.g. I want to sum the range contained in cell H36 - e.g.

"query!$M$2$M13$'
and I have already found the matching row by locating the single range

cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of B36)

and
then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is

Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function







  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 14
Default Row parts and range confusion

Tom,

Many thanks - apologies I am so dumb I did not even think of whether it was
a sheet module or not - now I see but no just a function on a worksheet.

I thought before I tried both versions and they didn't work but the non-form
one works perfectly now so thank you very much and my apologies - I must have
gone wrong somewhere !

Actually I did come across my own way of getting round the problem(though
yours is obviously more efficient) - be interested to see what you think of
the following:


Public Function regionTotal(countryRng As String, msgOption As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng4 As Range
Dim rng5 As Range
Dim rng6 As Range
Dim myRange As Range
Dim myCel As Range


Dim Total As Long

Dim res1 As Integer
Dim res2 As Integer
Dim resFinal As Integer

Dim myStr As String
Dim myformula As String

Set myCel = Range("b3")
myformula = myCel.Formula
Set rng = Range(myformula)

Total = 0
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)
resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)

'returns as "calc!H35"
myStr = "calc!H" & returnFormattedStringFromNumber(rng2.Row)

'sets rng5.value as "query!M8:M23"
Set rng5 = Range(myStr)
Set rng6 = Range(rng5)

Total = Application.WorksheetFunction.Sum(rng6)
End If

regionTotal = Total

End Function

Public Function returnFormattedStringFromNumber(inputNumber As Integer) As
String

Dim myStr As String

myStr = Str(inputNumber)
myStr = Right(myStr, Len(myStr) - 1)

returnFormattedStringFromNumber = myStr

End Function




"Tom Ogilvy" wrote:

If your not doing this in a sheet module then you can do

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

like I said in my previous response.

If it is in a sheet module then do

Total = Application.WorksheetFunction.Sum(Worksheets("quer y").Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)


But this limits the flexibility of this approach.

Yes, what you said and which is what i previously said, is the problem.

--
Regards,
Tom Ogilvy


"Jello" wrote in message
...
Dear Tom,

Thanks for the reply.
I think this is probably my fault again in that I wonder if it is because
the reference to column "H" is on another sheet named calc, the same sheet
where we got the search range info via Set rng = Range("calc!B10") '
Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched


So I have:
rng2 is B36 value but on sheet 'calc' and = "Michael Adams UK"
H36 contains the string "query!M2:M13" without the double quotes
BUT AGAIN THIS CELL IS ON SHEET 'calc' !

Is that why it fails when you say:
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

as it is expecting column H from the active sheet ? I assigned a macro to

my
function "regionTotal" in a cell on another sheet !
If this is the case is there any way round this ?
I am currently experimenting with how to set ranges....

Apologies if that was crucial.
Many thanks,
Jello


"Tom Ogilvy" wrote:

if rng2 is B36

and H36 contains the string "query!M2:M13" without the double quotes,

then

Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

would evaluate to

Total =

Application.WorksheetFunction.Sum(rng2.parentRange ("query!M2:M13").Value)

If rng2 is in sheet query (which it appears it isn't), then that should
work. If it isn't, then you need to change the code to

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

Cell H36 didn't contain a sheet name when this was written.

--
Regards,
Tom Ogilvy



"Jello" wrote in message
...
Hi using matching to identify a particular cell, I want to search and

sum
the
range of the contents of a cell - in a different column for the same

row.

e.g. I want to sum the range contained in cell H36 - e.g.
"query!$M$2$M13$'
and I have already found the matching row by locating the single range
cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of B36)

and
then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is

Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function










  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Row parts and range confusion

Whatever works for you is fine with me. After all, you know what you are
doing and I am just guessing.

--
Regards,
Tom Ogilvy

"Jello" wrote in message
...
Tom,

Many thanks - apologies I am so dumb I did not even think of whether it

was
a sheet module or not - now I see but no just a function on a worksheet.

I thought before I tried both versions and they didn't work but the

non-form
one works perfectly now so thank you very much and my apologies - I must

have
gone wrong somewhere !

Actually I did come across my own way of getting round the problem(though
yours is obviously more efficient) - be interested to see what you think

of
the following:


Public Function regionTotal(countryRng As String, msgOption As String) As

Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng4 As Range
Dim rng5 As Range
Dim rng6 As Range
Dim myRange As Range
Dim myCel As Range


Dim Total As Long

Dim res1 As Integer
Dim res2 As Integer
Dim resFinal As Integer

Dim myStr As String
Dim myformula As String

Set myCel = Range("b3")
myformula = myCel.Formula
Set rng = Range(myformula)

Total = 0
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)
resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)

'returns as "calc!H35"
myStr = "calc!H" & returnFormattedStringFromNumber(rng2.Row)

'sets rng5.value as "query!M8:M23"
Set rng5 = Range(myStr)
Set rng6 = Range(rng5)

Total = Application.WorksheetFunction.Sum(rng6)
End If

regionTotal = Total

End Function

Public Function returnFormattedStringFromNumber(inputNumber As Integer) As
String

Dim myStr As String

myStr = Str(inputNumber)
myStr = Right(myStr, Len(myStr) - 1)

returnFormattedStringFromNumber = myStr

End Function




"Tom Ogilvy" wrote:

If your not doing this in a sheet module then you can do

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

like I said in my previous response.

If it is in a sheet module then do

Total = Application.WorksheetFunction.Sum(Worksheets("quer y").Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)


But this limits the flexibility of this approach.

Yes, what you said and which is what i previously said, is the problem.

--
Regards,
Tom Ogilvy


"Jello" wrote in message
...
Dear Tom,

Thanks for the reply.
I think this is probably my fault again in that I wonder if it is

because
the reference to column "H" is on another sheet named calc, the same

sheet
where we got the search range info via Set rng = Range("calc!B10")

'
Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched

So I have:
rng2 is B36 value but on sheet 'calc' and = "Michael Adams UK"
H36 contains the string "query!M2:M13" without the double quotes
BUT AGAIN THIS CELL IS ON SHEET 'calc' !

Is that why it fails when you say:
Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

as it is expecting column H from the active sheet ? I assigned a macro

to
my
function "regionTotal" in a cell on another sheet !
If this is the case is there any way round this ?
I am currently experimenting with how to set ranges....

Apologies if that was crucial.
Many thanks,
Jello


"Tom Ogilvy" wrote:

if rng2 is B36

and H36 contains the string "query!M2:M13" without the double

quotes,
then

Total = Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

would evaluate to

Total =


Application.WorksheetFunction.Sum(rng2.parentRange ("query!M2:M13").Value)

If rng2 is in sheet query (which it appears it isn't), then that

should
work. If it isn't, then you need to change the code to

Total = Application.WorksheetFunction.Sum(Range( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)

Cell H36 didn't contain a sheet name when this was written.

--
Regards,
Tom Ogilvy



"Jello" wrote in message
...
Hi using matching to identify a particular cell, I want to search

and
sum
the
range of the contents of a cell - in a different column for the

same
row.

e.g. I want to sum the range contained in cell H36 - e.g.
"query!$M$2$M13$'
and I have already found the matching row by locating the single

range
cell
B36 which is set via Set rng2 = rng1(resFinal)

I set a particular cell as a range(rng2 is set to the value of

B36)
and
then
try to refer to the same row but another column in the totals line

Can someone explain to me how ranges work e.g. what is

Cells(rng2.Row,
"H").Value and why the totals line below is falling over
- I did not write it but when I run it the locals window blanks.

Many thanks again
Jello.


Public Function regionTotal(countryRng As String) As Long

Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range

Dim Total As Long

Dim res1 As Variant
Dim res2 As Variant
Dim resFinal As Integer

Set rng = Range("calc!B10") ' Apples
Set rng1 = Range("calc!B33:B65") ' range to be searched
res1 = Application.Match("*" & rng & "*", rng1, 0)
res2 = Application.Match("*" & countryRng & "*", rng1, 0)

resFinal = Application.WorksheetFunction.Max(res1, res2)

If Not IsError(resFinal) Then
Set rng2 = rng1(resFinal)
Total =

Application.WorksheetFunction.Sum(rng2.parent.Rang e( _
rng2.parent.Cells(rng2.Row, "H").Value).Value)
MsgBox Total & " for range: " & Cells(rng2.Row, "H").Value
Else
MsgBox Range("calc!B10").Value & " was not found"

End If

regionTotal = Total

End Function










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 parts of a data range into a new spreadsheet forest8 Excel Worksheet Functions 4 April 21st 08 08:26 PM
MDI Confusion CMoya Excel Discussion (Misc queries) 1 February 21st 08 02:11 PM
COUNTIF in a range (and parts of cells) Phrank Excel Worksheet Functions 3 October 10th 06 10:51 AM
Confusion..... Eric @ CMN, Evansville Excel Discussion (Misc queries) 2 December 27th 05 07:15 PM
Vlookup of parts of a word in a range of Data Andre Croteau Excel Discussion (Misc queries) 3 December 19th 04 07:26 PM


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