Solved

Speed up =sumif(A:A,A:A,B:B) ?

Posted on 2013-06-03
5
1,043 Views
Last Modified: 2013-06-03
=sumif(A:A,A:A,B:B)

Very quickly gets very slow.

What ways are there to tell it not to add up one million rows (or whatever)?

Typically the business use involves a very few thousand rows, tops. Usually 1 or 2 thousand only.

Purpose is balances by (accounting) reference.

I plan to make it a named formula, so any array type solutions also welcome.

I am trying to avoid A1:A1000 as a solution.

Anthony
0
Comment
Question by:Anthony Mellor
5 Comments
 
LVL 33

Accepted Solution

by:
Norie earned 500 total points
ID: 39216423
Anthony

You could try using dynamic named ranges that will only include rows with values.

What data do you have in the 3 columns?

By the way, the criteria (3rd argument) is normally a single expression not a range.
0
 
LVL 24

Expert Comment

by:Steve
ID: 39216461
Get your data...
highlight a cell inside it...
then use Data > InsertTable

Then use FormulaNames to name the table.
Then in sumif start typing the table name... it will appear in the list... then open square brackets and a list of your columns will appear.
Construct formula this way =SUMIF(Table1[AA],"A*",Table1[BB])

See attached.

The table will grow / shrink as data in it changes, so the ranges will be the right size automaticaly.
Example.xlsx
0
 
LVL 50

Expert Comment

by:barry houdini
ID: 39216543
Normally SUMIF only uses the "used range" anyway so actually using the whole column for the ranges isn't normally any more "expensive" than using a named range.....but why are you using a whole column for the criteria range? If the formula should be copied down then use just

=sumif(A:A,A1,B:B)

in row 1 copied down

Also do you need a sum on each row even if A1 is repeated? You could invoke SUMIF just on the first row for each repeated value, i.e. like

=IF(COUNTIF(A$1:A1,A1)=1,SUMIF(A:A,A1,B:B),"")

regards, barry
0
 
LVL 9

Author Comment

by:Anthony Mellor
ID: 39216875
What data do you have in the 3 columns?

invoice numbers
reference number being cross reference to the payment
amount of invoice(s)
amount of payment

amount of payment contains a sumif to derive the payment from the invoices with the same reference as this payment

amount of balance remaining unpaid per invoice

ok, that's more than 3 columns.
if all Greek I will write and upload an example.

Anthony (I have seen the replies above and now savouring them, thank you).

edit: if an example is needed I will make it another question.

edit I am wondering if the answer is as simple as the twice mentioned criteria needs only be one cell not a column.
0
 
LVL 9

Author Closing Comment

by:Anthony Mellor
ID: 39216962
Points for (if as a mere aside) directly and being the first to solve the problem. The Range as criteria was slowing everything down.

followup re tables Q_28146299.html

follow up re item counts: Q_28146326.html
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

821 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