![]() |
SUMIFS BY MONTH
Workbook €śSales€ť
(A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €śReport€ť SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €śSales€ť is a excel workbook from our sales system. I would like some code to organise all the sales data found in €śSales€ť and group it into monthly columns in a new excel file €śReport€ť but being new to vba I dont know where to start. In the workbook €śReport€ť: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon |
SUMIFS BY MONTH
Hi Simon
It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €śSales€ť (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €śReport€ť SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €śSales€ť is a excel workbook from our sales system. I would like some code to organise all the sales data found in €śSales€ť and group it into monthly columns in a new excel file €śReport€ť but being new to vba I dont know where to start. In the workbook €śReport€ť: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon |
SUMIFS BY MONTH
Hi Roger
Thanks again for your help. I have never used pivot tables before thus my hesitation. But on your advice I will give it a go. My version is 2007. I might need a bit of guidance getting the pivot table created. As I understand it I need to create the pivot table on another sheet within Reports. Using the data in Sales as an external source? The PT should have a dynamic range? Cheers Simon "Roger Govier" wrote: Hi Simon It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €œSales€ (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €œReport€ SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €œSales€ is a excel workbook from our sales system. I would like some code to organise all the sales data found in €œSales€ and group it into monthly columns in a new excel file €œReport€ but being new to vba I don€„˘t know where to start. In the workbook €œReport€: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon . |
SUMIFS BY MONTH
Would it be easier if I supplied my xls file to better explain? Is this
possible through the forum? "Simon" wrote: Hi Roger Thanks again for your help. I have never used pivot tables before thus my hesitation. But on your advice I will give it a go. My version is 2007. I might need a bit of guidance getting the pivot table created. As I understand it I need to create the pivot table on another sheet within Reports. Using the data in Sales as an external source? The PT should have a dynamic range? Cheers Simon "Roger Govier" wrote: Hi Simon It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €œSales€ (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €œReport€ SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €œSales€ is a excel workbook from our sales system. I would like some code to organise all the sales data found in €œSales€ and group it into monthly columns in a new excel file €œReport€ but being new to vba I don€„˘t know where to start. In the workbook €œReport€: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon . |
SUMIFS BY MONTH
Hi Simon
Yes, I would use a dynamic named range for a PT source http://www.ozgrid.com/Excel/excel-pivot-tables.htm -- Regards Dave Hawley www.ozgrid.com "Simon" wrote in message ... Hi Roger Thanks again for your help. I have never used pivot tables before thus my hesitation. But on your advice I will give it a go. My version is 2007. I might need a bit of guidance getting the pivot table created. As I understand it I need to create the pivot table on another sheet within Reports. Using the data in Sales as an external source? The PT should have a dynamic range? Cheers Simon "Roger Govier" wrote: Hi Simon It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €œSales€ (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €œReport€ SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €œSales€ is a excel workbook from our sales system. I would like some code to organise all the sales data found in €œSales€ and group it into monthly columns in a new excel file €œReport€ but being new to vba I don€„˘t know where to start. In the workbook €œReport€: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon . |
SUMIFS BY MONTH
OK
I have created a pivot table in PT and grouped the dates into months It looks like this: SumofQtySold Item Date Total WidgetX Jan 300 Mar 400 Jun 1200 WidgetY Jan 2000 Feb 800 etc I have tried the formula: Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A4downward and your Months in K3 onward, the formula in K4 would be =INDEX(PT!$1:$65536,MATCH($A4,PT!$A:$A,0),MATCH(K$ 3,PT!$4:$4,0)) But get a #N/A What am I doing wrong? "ozgrid.com" wrote: Hi Simon Yes, I would use a dynamic named range for a PT source http://www.ozgrid.com/Excel/excel-pivot-tables.htm -- Regards Dave Hawley www.ozgrid.com "Simon" wrote in message ... Hi Roger Thanks again for your help. I have never used pivot tables before thus my hesitation. But on your advice I will give it a go. My version is 2007. I might need a bit of guidance getting the pivot table created. As I understand it I need to create the pivot table on another sheet within Reports. Using the data in Sales as an external source? The PT should have a dynamic range? Cheers Simon "Roger Govier" wrote: Hi Simon It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €œSales€ (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €œReport€ SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €œSales€ is a excel workbook from our sales system. I would like some code to organise all the sales data found in €œSales€ and group it into monthly columns in a new excel file €œReport€ but being new to vba I don€„˘t know where to start. In the workbook €œReport€: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon . |
SUMIFS BY MONTH
This seems to work though
Range("K4").Select ActiveCell.FormulaR1C1 = _ "=IFERROR(GETPIVOTDATA(""Qty Sold"",PT!R1C1,""Item"",RC1,""Actual Fulfillment Date"",MONTH(R3C)),0)" Selection.AutoFill Destination:=Range("K4:K" & LR), Type:=xlFillDefault And is way faster than my old sumproduct method. Now I just have to figure out creating a dynamic range for the Pivot table. "Simon" wrote: OK I have created a pivot table in PT and grouped the dates into months It looks like this: SumofQtySold Item Date Total WidgetX Jan 300 Mar 400 Jun 1200 WidgetY Jan 2000 Feb 800 etc I have tried the formula: Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A4downward and your Months in K3 onward, the formula in K4 would be =INDEX(PT!$1:$65536,MATCH($A4,PT!$A:$A,0),MATCH(K$ 3,PT!$4:$4,0)) But get a #N/A What am I doing wrong? "ozgrid.com" wrote: Hi Simon Yes, I would use a dynamic named range for a PT source http://www.ozgrid.com/Excel/excel-pivot-tables.htm -- Regards Dave Hawley www.ozgrid.com "Simon" wrote in message ... Hi Roger Thanks again for your help. I have never used pivot tables before thus my hesitation. But on your advice I will give it a go. My version is 2007. I might need a bit of guidance getting the pivot table created. As I understand it I need to create the pivot table on another sheet within Reports. Using the data in Sales as an external source? The PT should have a dynamic range? Cheers Simon "Roger Govier" wrote: Hi Simon It would have been better to stay in the same thread, so people could see what replies you have already had. Personally, I would still use a PT to do the "heavy lifting" for me in terms of calculating the results. I would then pull results from the PT (which could be on a hidden sheet) to my main report, along with the other data you wish to collate. In your case, the PT would have a fixed width , but potentially a growing number of rows, so there would not be a need to use the slightly complicated GetPivotData function to extract your results, you could simple use Index and Match. Supposing your Pt was on a sheet called "PT" then on your Report sheet, with your products starting in A2 downward and your Months in B1 onward, the formula in B2 would be =INDEX(PT!$1:$65536,MATCH($A2,PT!$A:$A,0),MATCH(B$ 1,PT!$4:$4,0)) This would be copied across and down as required. Any other data could be inserted on the report page below this. But if you do want to do it the hard way <bg!!!! Then Sumproduct would be the way, but be aware that on large datasets, Sumproduct can be very slow. I would definitely use Dynamic Named ranges for the Sumproduct formulae, rather than over long ranges just to allow for more data entry, as this will limit the number of calculations Sumproduct has to make. Rather than describe the method here in detail, take a look at the tutorial I wrote at http://www.contextures.com/xlNames03.html with a sample downloadable file http://www.contextures.com/CreateNames.zip This should show you how to do it with both Sumproduct and PT's If you need more help, post back (in the same thread) and also include the version of Excel you are using. Hope this helps. -- Regards Roger Govier Simon wrote: Workbook €œSales€ (A1)Product (B1)Qty (C1)Date X 2 2/1/2010 X 1 10/1/2010 X 3 5/3/2010 Y 1 8/1/2010 Y 2 5/2/2010 Y 1 3/3/2010 Y 1 5/3/2010 Z 2 3/2/2010 Z 1 5/3/2010 Workbook €œReport€ SUMQTY (A2)Product (B2)Mar10 (C2)Feb10 (D2)Jan10 X 3 0 3 Y 2 2 1 Z 1 2 0 Hi €œSales€ is a excel workbook from our sales system. I would like some code to organise all the sales data found in €œSales€ and group it into monthly columns in a new excel file €œReport€ but being new to vba I don€„˘t know where to start. In the workbook €œReport€: I want B2 to be the current month and year (Mar10), C2 to be the current month -1 (Feb10) and so on until I have 12 columns i.e 1 year. Then I want the SUM of all the QTYs for each month for each product in the correct column as shown above. Can anyone help with the code? A pivot table is not the answer because I also have other data which I want to pull in from other external workbooks Many thanks Simon . |
All times are GMT +1. The time now is 11:25 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com