Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Excel spreadsheet: Using a function in a sumif()

Posted on 2014-03-24
7
Medium Priority
?
378 Views
Last Modified: 2014-03-24
I have two columns in a worksheet: Class and Amount

Class     Amount
HW     $200.56
SW      $303.32
HW     $111.11
IN       $222.22
XX       $56.56
YY        $543.22

I have subtotals (using sumif) for each valid product class:
Hardware would be $311.67
Software would be $303.32
Installation would be $222.22

I want to have a subtotal for "Miscellaneous" that adds up all non-valid Classes.

I already have a IsValidProductClass() function. Is there a way to use that in a SUMIF funtion to total all invalid product classes?
0
Comment
Question by:Geri Richter
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 12

Expert Comment

by:Harry Lee
ID: 39951047
GeriR,

In order to work with custom function, you should upload a sample worksheet so that we can look at how the custom function works to determine a solution for you.
0
 
LVL 19

Expert Comment

by:regmigrant
ID: 39951077
You could add a column 'Valid class' and include only 'True' in the Sumifs.
Or you could have a separate sumifs using all  'do not equal' (ie: the opposite of current sumifs)

There's no way to call the function itself from within Sumifs and as Harry says without a view of the function no one can comment on how it might be changed.
0
 
LVL 43

Expert Comment

by:Saqib Husain, Syed
ID: 39951143
You can also subtract all the valid sums from the grand total.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Geri Richter
ID: 39951743
OK, I've attached a sample of what I am trying to do.

The workbook I'm working with is much more complicated.  

It is an order quoting tool that figures out all sorts of margins and profits and compares different types of pricing packages.

When my client is "finished" working on the quote, they want to be able to generate a worksheet for their customer showing only the quantity, prices, and product classes. They also want a subtotal box on the bottom. They want me to break out each of the valid product codes and then collect any invalid codes into a "Miscellaneous" box.

Unfortunately, their idea of "finished" is not quite final. They still want to be able to make minor tweaks.

So, I'm looking for a neat and simple way to create that box, and it has to still work if they then add or delete line items.
Sumif-Question.xlsm
0
 
LVL 12

Expert Comment

by:Harry Lee
ID: 39951824
GeriR,

In you situation, I would say Saqib Husain, Syed's suggestion is the best.

Pretty much use the Grant Total subtracting all the rest.

=sum(b2:b19)-sum(B20:B25)
0
 
LVL 12

Accepted Solution

by:
Harry Lee earned 2000 total points
ID: 39951939
GeriR,

If you insist of getting your custom function to work in your formula, have to change your custom function to the following to make it accept range instead of only 1 cell.

Function IsValidProductClass(sProductClass As Range) As Variant
Dim OutputArr As Variant
Dim I As Long, I2 As Long

I = sProductClass.Count
ReDim OutputArr(1 To I)
For I2 = 1 To I
    Select Case sProductClass(I2)
    Case Is = "HW"
        OutputArr(I2) = True
    Case Is = "SW"
        OutputArr(I2) = True
    Case Is = "IN"
        OutputArr(I2) = True
    Case Is = "ES"
        OutputArr(I2) = True
    Case Is = "HS"
        OutputArr(I2) = True
    Case Is = "SV"
        OutputArr(I2) = True
    Case Else
        OutputArr(I2) = False
    End Select
Next I2
IsValidProductClass = Application.Transpose(OutputArr)
End Function

Open in new window

Then, in your sumif cell, you have to enter array formula
=SUMPRODUCT(NOT(isvalidproductclass(A2:A18))*B2:B18)

Open in new window

by Ctrl-Alt-Enter instead of Enter normally.
0
 

Author Closing Comment

by:Geri Richter
ID: 39952103
Perfect - just what I was looking for. Thanks.
0

Featured Post

Office 365 Training for Admins - 7 Day Trial

Learn how to provision tenants, synchronize on-premise Active Directory, implement Single Sign-On, customize Office deployment, and protect your organization with eDiscovery and DLP policies.  Only from Platform Scholar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

704 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question