Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 49
Default Lookup and summing comparison

I am struggling with finding a simple solution to this and I am not sure
if it is a function option or a programming option. In one worksheet
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

There are obviously more columns etc but the concept is the same.
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.
It is further complicated by varying number of entries in Sheet A for
the Field 1, 2 etc.
I can do it using VLookup and Sumif etc but it is long and convoluted, I
just feel there is a simpler solution. I have put it in the Functios
group but if you feel a programming solution is more effective then I
would value any pointers.
Thanks for taking the time to read through this garbled explanation.

Kind Regards
Graham Haughs
Turriff, Scotland
  #2   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 4,339
Default Lookup and summing comparison

Graham,

Try this: assumes data starts column 2 on both sheets

Sub HiLow()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastrow As Long, r As Long

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")

With ws1
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
r = 2 '<=== start row of data
Do
n = Application.CountIf(Range("A:A"), .Cells(r, "A"))
Sum1 = Application.SumIf(Range("A:A"), .Cells(r, "A"), Range("B:B"))
sum2 = Application.VLookup(.Cells(r, "A"), ws2.Range("A:B"), 2, 0)
If IsError(sum2) Then
.Cells(r + n - 1, "C") = "No match"
Else
If Sum1 sum2 Then
.Cells(r + n - 1, "C") = "Too high"
Else
If Sum1 < sum2 Then
.Cells(r + n - 1, "C") = "Too Low"
End If
End If
End If
r = r + n
Loop Until r lastrow
End With
End Sub

HTH
"Graham Haughs" wrote:

I am struggling with finding a simple solution to this and I am not sure
if it is a function option or a programming option. In one worksheet
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

There are obviously more columns etc but the concept is the same.
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.
It is further complicated by varying number of entries in Sheet A for
the Field 1, 2 etc.
I can do it using VLookup and Sumif etc but it is long and convoluted, I
just feel there is a simpler solution. I have put it in the Functios
group but if you feel a programming solution is more effective then I
would value any pointers.
Thanks for taking the time to read through this garbled explanation.

Kind Regards
Graham Haughs
Turriff, Scotland

  #3   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 4,339
Default Lookup and summing comparison

Couple of corrections to ensure correct data is selected [.Range (...)
instead of just Range(..)]

n = Application.CountIf(.Range("A:A"), .Cells(r, "A"))
Sum1 = Application.SumIf(.Range("A:A"), .Cells(r, "A"), .Range("B:B"))

"Toppers" wrote:

Graham,

Try this: assumes data starts column 2 on both sheets

Sub HiLow()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastrow As Long, r As Long

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")

With ws1
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
r = 2 '<=== start row of data
Do
n = Application.CountIf(Range("A:A"), .Cells(r, "A"))
Sum1 = Application.SumIf(Range("A:A"), .Cells(r, "A"), Range("B:B"))
sum2 = Application.VLookup(.Cells(r, "A"), ws2.Range("A:B"), 2, 0)
If IsError(sum2) Then
.Cells(r + n - 1, "C") = "No match"
Else
If Sum1 sum2 Then
.Cells(r + n - 1, "C") = "Too high"
Else
If Sum1 < sum2 Then
.Cells(r + n - 1, "C") = "Too Low"
End If
End If
End If
r = r + n
Loop Until r lastrow
End With
End Sub

HTH
"Graham Haughs" wrote:

I am struggling with finding a simple solution to this and I am not sure
if it is a function option or a programming option. In one worksheet
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

There are obviously more columns etc but the concept is the same.
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.
It is further complicated by varying number of entries in Sheet A for
the Field 1, 2 etc.
I can do it using VLookup and Sumif etc but it is long and convoluted, I
just feel there is a simpler solution. I have put it in the Functios
group but if you feel a programming solution is more effective then I
would value any pointers.
Thanks for taking the time to read through this garbled explanation.

Kind Regards
Graham Haughs
Turriff, Scotland

  #4   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 49
Default Lookup and summing comparison

Thanks for feedback. Seems to be problematical in that a "No Match" is
appearing in every row in column C of Sheet 1. It does not appear to
take the totals from that sheet and compare with Sheet 2 entries, it is
comparng every entry I think. I will try a few variations. Thanks for
your help.

graham

Toppers wrote:
Graham,

Try this: assumes data starts column 2 on both sheets

Sub HiLow()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastrow As Long, r As Long

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")

With ws1
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
r = 2 '<=== start row of data
Do
n = Application.CountIf(Range("A:A"), .Cells(r, "A"))
Sum1 = Application.SumIf(Range("A:A"), .Cells(r, "A"), Range("B:B"))
sum2 = Application.VLookup(.Cells(r, "A"), ws2.Range("A:B"), 2, 0)
If IsError(sum2) Then
.Cells(r + n - 1, "C") = "No match"
Else
If Sum1 sum2 Then
.Cells(r + n - 1, "C") = "Too high"
Else
If Sum1 < sum2 Then
.Cells(r + n - 1, "C") = "Too Low"
End If
End If
End If
r = r + n
Loop Until r lastrow
End With
End Sub

HTH
"Graham Haughs" wrote:

I am struggling with finding a simple solution to this and I am not sure
if it is a function option or a programming option. In one worksheet
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

There are obviously more columns etc but the concept is the same.
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.
It is further complicated by varying number of entries in Sheet A for
the Field 1, 2 etc.
I can do it using VLookup and Sumif etc but it is long and convoluted, I
just feel there is a simpler solution. I have put it in the Functios
group but if you feel a programming solution is more effective then I
would value any pointers.
Thanks for taking the time to read through this garbled explanation.

Kind Regards
Graham Haughs
Turriff, Scotland

  #5   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 4,339
Default Lookup and summing comparison

Graham,
i tested it on your posted data and it worked OK. Assumption
is that data in Sheet1 is sorted by "Field" as indicated in your posting.

"Sum1" is total from sheet1 which is compared with "Sum2" (Vlookup) from
Sheet2.

If you want, post sample to me

toppers<atnospamjohntopley.fsnet.co.uk (remove nospam)

"Graham Haughs" wrote:

Thanks for feedback. Seems to be problematical in that a "No Match" is
appearing in every row in column C of Sheet 1. It does not appear to
take the totals from that sheet and compare with Sheet 2 entries, it is
comparng every entry I think. I will try a few variations. Thanks for
your help.

graham

Toppers wrote:
Graham,

Try this: assumes data starts column 2 on both sheets

Sub HiLow()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastrow As Long, r As Long

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")

With ws1
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
r = 2 '<=== start row of data
Do
n = Application.CountIf(Range("A:A"), .Cells(r, "A"))
Sum1 = Application.SumIf(Range("A:A"), .Cells(r, "A"), Range("B:B"))
sum2 = Application.VLookup(.Cells(r, "A"), ws2.Range("A:B"), 2, 0)
If IsError(sum2) Then
.Cells(r + n - 1, "C") = "No match"
Else
If Sum1 sum2 Then
.Cells(r + n - 1, "C") = "Too high"
Else
If Sum1 < sum2 Then
.Cells(r + n - 1, "C") = "Too Low"
End If
End If
End If
r = r + n
Loop Until r lastrow
End With
End Sub

HTH
"Graham Haughs" wrote:

I am struggling with finding a simple solution to this and I am not sure
if it is a function option or a programming option. In one worksheet
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

There are obviously more columns etc but the concept is the same.
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.
It is further complicated by varying number of entries in Sheet A for
the Field 1, 2 etc.
I can do it using VLookup and Sumif etc but it is long and convoluted, I
just feel there is a simpler solution. I have put it in the Functios
group but if you feel a programming solution is more effective then I
would value any pointers.
Thanks for taking the time to read through this garbled explanation.

Kind Regards
Graham Haughs
Turriff, Scotland




  #6   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 733
Default Lookup and summing comparison

Graham Haughs wrote...
....
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

....
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.

....

If the first table were sorted on its column A and the second table
were named Tbl and also sorted on its first column, then if the topmost
record were in row 2, the C2 formula could be

C2:
=IF(AND($A2<$A3,SUMIF($A$2:$A2,$A2,B$2:B2)VLOOKU P($A2,Tbl,COLUMN(B2)),
"Too High!","")

Is this really too cumbersome? It's a LOT more flexible and robust than
any macro alternative. Note: this won't produce a result other than ""
until C3, th

  #7   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 733
Default Lookup and summing comparison

Graham Haughs wrote...
....
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

....
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.

....

If the first table were sorted on its column A and the second table
were named Tbl and also sorted on its first column, then if the topmost
record were in row 2, the C2 formula could be

C2:
=IF(AND($A2<$A3,SUMIF($A$2:$A2,$A2,B$2:B2)VLOOKU P($A2,Tbl,COLUMN(B2)),
"Too High!","")

Is this really too cumbersome? It's a LOT more flexible and robust than
any macro alternative. Note: this won't produce a result other than ""
until C3, which is the last instance of Field 1 in column A of your
first table.

  #8   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 49
Default Lookup and summing comparison

Harlan Grove wrote:
Graham Haughs wrote...
...
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

...
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.

...

If the first table were sorted on its column A and the second table
were named Tbl and also sorted on its first column, then if the topmost
record were in row 2, the C2 formula could be

C2:
=IF(AND($A2<$A3,SUMIF($A$2:$A2,$A2,B$2:B2)VLOOKU P($A2,Tbl,COLUMN(B2)),
"Too High!","")

Is this really too cumbersome? It's a LOT more flexible and robust than
any macro alternative. Note: this won't produce a result other than ""
until C3, which is the last instance of Field 1 in column A of your
first table.

No Harlan I really don't think that this is too cumbersome, only my
efforts with Sumif and VLookup had failed to yield a composite of the
purity which you have created. It was my ideal to have a single entry
like this. I still value the macro construction, which I have now got to
work, as it offers another dimension to a problem and it is great to
have these options.
I am indebted to you.

Graham
  #9   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 4,339
Default Lookup and summing comparison

.. but it doesn't give a "Too Low" message or "error" if no match found ...
although the OP didn't specify this as a requirement.

"Harlan Grove" wrote:

Graham Haughs wrote...
....
(Sheet A) as an example there could be two columns as below
Column A Column B
Field 1 12
Field 1 55
Field 2 24
Field 2 43
Field 2 18
Field 3 16
Field 4 21
Field 4 41

In another worksheet (Sheet B) there are also two columns as below
Column A Column B
Field 1 28
Field 2 65
Field 3 67
Field 4 54

....
Ideally what I would like to do is in Sheet A, in column C, at the point
where there is the last entry of a Field in column A, a warning flag of
any kind to appear if the totals of Column B are greater than the value
in Sheet B of Column B for the same field. eg in Sheet A, for Field 1,
the total is 77, while the respective figure in Sheet B is 28 for the
same field. Thus the flag of "Too High!" or some equivalent should
appear in cell C2 of Sheet A.

....

If the first table were sorted on its column A and the second table
were named Tbl and also sorted on its first column, then if the topmost
record were in row 2, the C2 formula could be

C2:
=IF(AND($A2<$A3,SUMIF($A$2:$A2,$A2,B$2:B2)VLOOKU P($A2,Tbl,COLUMN(B2)),
"Too High!","")

Is this really too cumbersome? It's a LOT more flexible and robust than
any macro alternative. Note: this won't produce a result other than ""
until C3, which is the last instance of Field 1 in column A of your
first table.


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
How to lookup multiple values and summing them up in one cell Amr Abul Laban Excel Worksheet Functions 7 April 19th 10 02:57 PM
Summing lookup values ~C Excel Worksheet Functions 4 April 27th 06 06:33 PM
summing lookup results Martyn Excel Discussion (Misc queries) 4 March 2nd 06 09:25 AM
Lookup or Summing problem Dwayne Excel Worksheet Functions 1 January 18th 06 10:26 PM
Lookup value throughout an array_return adjacent value and summing SP Excel Worksheet Functions 3 August 26th 05 09:24 PM


All times are GMT +1. The time now is 10:27 PM.

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"