View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.worksheet.functions
zvkmpw zvkmpw is offline
external usenet poster
 
Posts: 153
Default Count Dates in a range based on Column Header Id without using sum-product

I want to use the countif function to count dates in a range based on
Column HEADER at the Top. For example I want to count all X005 between
01st and 10th of May, 2012.
I am looking for a dynamic countif function using look up formula which
could be replicated for other IDs like X006, X007 without highlighting
the column number.
The problem is 2-fold:
1. Select column X005
2. Count dates between 01st and 10th of May

So, Once I copy over this formula in the cell below it would populates
the count for X006

I do not want to use sum-product as it takes up lot of memory and
freezes excel if i try to change a date.

The Data is shown Below: ( Actual Data runs 1000s of lines)

ID X005 X006 X007 X008 X009 X010 X011
A001 25-May-12 2-Jul-12 28-Sep-12 18-Jun-12 6-Jul-12 9-Sep-12 25-Aug-12
A002 25-May-12 2-Jul-12 28-Sep-12 18-Jun-12 6-Jul-12 9-Sep-12 25-Aug-12
A003 25-May-12 2-Jul-12 28-Sep-12 8-Jun-12 6-Jul-12 17-Sep-12 25-Aug-12
A004 25-May-12 2-Jul-12 28-Sep-12 29-Jun-12 6-Jul-12 17-Sep-12 25-Aug-12
A005 25-May-12 9-Jul-12 4-Oct-12 8-Jun-12 13-Jul-12 16-Sep-12 31-Aug-12
A006 25-May-12 9-Jul-12 4-Oct-12 11-Jun-12 13-Jul-12 16-Sep-12 31-Aug-12
A007 02-May-12 9-Jul-12 4-Oct-12 14-Jun-12 13-Jul-12 16-Sep-12 31-Aug-12


I'm not following exactly how you want somebody to interact with the spreadsheet, or what problems you've had so far.

However, the following does seem to get the desired result.

I put your data in columns A:H, and added a few thousand more rows to test for performance problems.

I used K1 and K2 to hold (respectively) the user-chosen earliest date and latest date to be included in the count.

I used K3 to hold the user-chosen column-header value; for example, X007.

For convenience, I put this formula in K4:
=MATCH(K3,B1:J1)
It calculates the column number from the column-header value.

Then the result is:
=COUNTIF(OFFSET(A1,1,K4,10000,1),"="&K1)
-COUNTIF(OFFSET(A1,1,K4,10000,1),""&K2)
If there can be more than 10000 rows, increase the two appearances of "10000".

The calculation completes with no discernible delay. I'm using Excel 2003 on Windows XP with a ten-year-old Dell desktop PC.

Hope I got the requirements right!

Modify as needed.