Populate Using SUMPRODUCT Or ARRAY
Apr 3, 2009formula to take data from a column entry to a row style? I've attached a sample spreadsheet.
View 9 Repliesformula to take data from a column entry to a row style? I've attached a sample spreadsheet.
View 9 RepliesI am trying to populate many arrays with the same code using something like this. For this test, assume the following data in A1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Code:
Sub populate()
Dim firstArr(5), secondArr(5), thirdArr(5), fourthArr(5), fifthArr(5) As Integer
Dim r, c, num As Integer
[Code]....
The above code does not work of course and falls over. I am unsure whether I should try and concatenate with something like this eg "" & arrName(i) = Cells (r,c) or go down a different route.
The first tab I have a summary sheet which I want to auto populate with a sumproduct function, the second tab is where the dates and values are I wish to sum the value if it’s returned in January. I had a go to try sum the entire range see below but it’s not working
=SUMPRODUCT(--('Alex Guest - Scotland'!$G$19:$G$1048576>=1/1/2009),--('Alex Guest - Scotland'!$G$19:$G$1048576<=3/1/2009),--('Alex Guest - Scotland'!$H$19:$H$1048576))
The ultimate goal I am trying to achieve is if there is a date in January in the date returned column and the php column does not contain a value I want it to sum in the summary sheet in January. Hopefully if anyone can advise that would be great then I can look at the formula and try workout to sum only if there is a value in the php column in January
There is a date field and three "attempt" fields.
If The first attempt was a fail and the second a pass this must count as a pass and not a fail. If the first attempt was a fail and second was a fail then this must count as a fail, same again for third column.
On the totals tab there should be a total against each date for the fails. As you can see iv tried doing by sumproduct but its not working, i understand why its not working but i just can't see how I can get it right.
I have a function that has a formula sumproduct and here it is:
Set RSheet = Worksheets("Rawdata")
Set RSheet = Worksheets("Rawdata")
RSheet_lastRow = RSheet.Cells(Rows.Count, "A").End(xlUp).Row
RSheet.Range("AJ2:AJ" & RSheet_lastRow).Formulaarray = "=SUMPRODUCT
((V2>=ProjectedStarts!$K$1:$K$45)*(V2<=ProjectedStarts!$L$1:$L$45),ProjectedStarts!$M$1:$M$45)"
The problem is that when the formula is sent to each cell V2 (bolded) does not change to V3, V4, V5.
I have the the following formula =SUMPRODUCT(--(dealer1=$B36),--(make=$A36),--(company<>nominated))
The first two statements work alone, however I have an array which contains a list of customers that I wish to exclude from the total. I've put those in an array and called it nominated, However I just get #N/A.
I need to finish a final bit of tweaking in the following formula..
=SUMPRODUCT(--('[MRP Data File.xls]ZMM_CHECK_MRP_AREA'!$A$1:$A$10000=A9),--('[MRP Data File.xls]ZMM_CHECK_MRP_AREA'!$D$1:$D$10000="15BG"),--('[MRP Data File.xls]ZMM_CHECK_MRP_AREA'!$I$1:$I$10000""),'[MRP Data File.xls]ZMM_CHECK_MRP_AREA'!$R$1:$R$10000)
What I'm trying to achieve is to return the value of the cell in column R if column A=A9, D="15BG", this part is fine so far but I only want to return the value if column I = NOTBLANK
At the moment the value is returning whether it is blank or not...
For info: column I will only contain "CLC", "CLR" or totally blank
Using Excel 2003, I'm summarizing info in one sheet (Review) with data in another worksheet (Work Orders). The following SUMPRODUCT calc worked fine...
View 2 Replies View RelatedI need to sum several non-contiguous columns if certain other columns meet a certain criterion.
Details:
Need to sum columns Q,R,S,T,U,V,W,X,Y,Z,AC,AD,AI,AJ,AK,AL,AM,AN,AP,AQ,AR,AS,AT,AU,AV,AX,AY,AZ,BA,BC,BD,BE,BF,BH,BI,BK,BL,BM,BN,BQ,BR
in sheet "(1) 65539004 SAP"
IF
column D in sheet "(1) 65539004 SAP" = A2 in sheet "(4) Brand Breakout" AND column L in "(1) 65539004 SAP" = $B$1 in "(4) Brand Breakout"
The formula will be placed in C2 in "(4) Brand Breakout" and copied to other cells just FYI,
I think I need an array formula or possible a sumproduct formula, to make this work
=SUMIF($BU$36:$BU$66,"X",T$36:T$66)
Column BU is a column that gets an X auto added to it each day, the date field runs down my spreadsheet from row 36 to 66. I use the X as month to date signifier so each day before todays date has an X in column BU. The formula above will then take whatever is in column T and adds up only the figures enter against the date before todays date.
This method works for most of my fields but column T is an average so I can't just add up the averages.
Column T is Average Handle Time, to work out the AHT for the month I presume I need some sort of array formula that also looks at the number of multiples the AHT by calls handled each day then divide the total minutes month to date by the total calls handled. How do I fit in an array formula that only works for the days when column BU has an X in it.
The calls handled field is column P
I've tried this but it doesn't work as a formula (the sumproduct part works outside of the sum if part).
=SUMIF($BU$36:$BU$66,"X",SUMPRODUCT($P$36:$P$42,$T$36:$T$42))
I've created a spreadsheet with SUMPRODUCT formulae, which is working fine for now.
However, these formulae include arrays with ranges of, for example, $G$2:$G$600. What we need to do is, instead, reference the while column as far down as it goes, forever as the range of the array. This applies to multiple occurrences.
Every formula I have found for this may work on of itself, but does not work with the SUMPRODUCT formulae I have used.
For reference, an example:
=SUMPRODUCT(--('BG NEW DB'!$D$2:$D$600=$B$2),--('BG NEW DB'!$G$2:$G$600=C$2),--('BG NEW DB'!$H$2:$H$600=$A$2),--('BG NEW DB'!$AD$2:$AD$600="Y"))
I want to use Sumproduct function to sum up the values that belong only to Product "PXT" and "PCT". I enter it as array but my formulae doesnt work. can someone give me a hand. Here is my formulae: =SUMPRODUCT((C2:C10="PXT")*(C2:C10="PCT"))*(A2:A10)
ABCD
1ValueQtyProduct
2299.944PXT
3186.53PXT
4711.071PCA
5561.862PCT
6608.961PXT
7520.026PCT
8427.682PCA
9397.341PCA
10387.664PCT
I have read in 2 blocks of data as 2D arrays, and wish to create a third 2D array from some of the elements of the first two. When I do this I get an output range that is the correct size, however each row of data in the range is identical. This is what I am using:
[Code] .....
So my main concern is how to get each row of data being printed to Sheet2 to be the correct rows, and not just one row repeated thousands of times.
I've got a list box which I want to fill with a two column array, with items from a sheet based on a criteria selected by userform fired from another sheet.
Private Sub VariationsApprovedListMake()
Dim ws As Worksheet
Dim MyList(10, 2) As String
Dim M%, n%
Set ws = Worksheets("Variations")
LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row
'Clear ListBox
lbVariationsApproved.Clear
'>
With lbVariationsApproved
.ColumnCount = 2
.ColumnWidths = "25;25"
.Width = 200
.Height = 100
End With.....................
I have a set of values stored in an array an I simply want to populate the list box with these. one article on the microsoft website simply gave:
'Assign the array to the listbox
ListBox1.List = LArray
However, I get an object required error.
I have a list of values in a column that I want to enter into an array. The values are linked from a database and as such the number of values that are in the column can change. At the moment I am populating the array using the code below. I have made the array much larger than it needs to be to accommodate for the possiblity of more data being entered into the database and my loop also accounts for this by adding extra values into the array. Just wondering if there was a more efficient way to
a) Dimension the array
and
b) Populate the array so that only the data I need is entered into the array
Dim ClassArray(40) As String
'Save Classes as an array
For j = 0 To 39
ClassArray(j) = SourceWB. Sheets("HMI Class"). Cells(j - 2, 1).Value
To calculate the result for a month is easy, but I can't figure how to get a single cell formula to calculate for the year. The sample attached explains it better.
View 4 Replies View RelatedMy problem is :
1.In G Column I put logic for Fail and Obtained Marks.
G2=IF(COUNTIF(B2:F2,">=60")=5,SUM(B2:F2),"Fail")
2. Now in H column I want use this formula which I obtained from this forum
H2=SUMPRODUCT((G$2:G$7>G2)/COUNTIF(G$2:G$7,G$2:G$7&""))+1
To get the position of Students.
But the text value "fail" in the G2:G7 getting Position No. 1 and i've noticed the reason by using evaluate formula as well.
3. I got solution by changing "Fail" with 0 by creating column I and then column H put this formula ........
I'm using a formula (with the SUMPRODUCT function) within which I need to match the month & year from an array with 3 "true" possibilities...
Meaning that if data (month & year) from the array matches any of the 3 months & year of a specific quarter (for example July 08, August 08, September 08), the result of that section should be "True".
The data to be matched (any of the 3 months of each quarter) is drawn from a table header (showing every month of the year) by using this "monthly" formula:
TEXT(H7;"mm.yyyy") where H7 holds "01.07.2008" (but displays "Jul. 08") and returns "07.2008".
I'm trying to extend it to something like:
TEXT({H$7;I$7;J$7};"mm.yyyy") to match either July 2008 (H7), August 2008 (I7) or September 2008 (J7) for the 3rd quarter of 2008 but when I hit Enter, I get an error and H$7 is highlighted ("ctrl + shift + enter" doesn't help).
Here's an excerpt of the formula that works well for other queries on my worksheet:
=SUMPRODUCT(--(TEXT('Current update analysis'!$O$2:OFFSET('Current update analysis'!$O$2;(COUNTA('Current update analysis'!$B:$B)+20);"mm.yyyy")=TEXT({H$7;I$7;J$7};"mm.yyyy")); --('Current update analysis'!$k$2:OFFSET('Current update analysis'!$k$2;(COUNTA('Current update analysis'!$B:$B)+20)="ok"))
how I could/should structure the formula for it to work?
I want to get students positions in a class like 1st, 2nd, 3rd, etc. There can be two 1st position and 2 2nd positions at a time .
1.In G Column I put logic for Fail and Obtained Marks.
G2=IF(COUNTIF(B2:F2,">=60")=5,SUM(B2:F2),"Fail")
2. Then i made array formula in column H to get the position
={SUMPRODUCT((IF(ISNUMBER($G$2:$G$7),$G$2:$G$7,0)>N(G2))/COUNTIF(G$2:G$7,G$2:G$7&""))+1}
Some improvement to write fail & position
={IF(COUNTIF(B3:F3,">=60")5,"Fail",SUMPRODUCT((IF(ISNUMBER($G$2:$G$7),$G$2:$G$7,0)>N(G3))/COUNTIF(G$2:G$7,G$2:G$7&""))+1)}
And more work to get total marks & position and Fail at the same time......
={IF(COUNTIF(B2:F2,">=60")5,"Fail",SUM(B2:F2)&"-"&SUMPRODUCT((IF(ISNUMBER($G$2:$G$7),$G$2:$G$7,0)>N(G2))/COUNTIF(G$2:G$7,G$2:G$7&""))+1)}
Now I wounder that is there a way to do all calculations in column H without using column G
By replacing (if there is any method) G2, G3, G4 etc. with Sum(B2:F2); Sum(B3:F3);Sum(B4:F4) etc. in below formula
={SUMPRODUCT((IF(ISNUMBER($G$2:$G$7),$G$2:$G$7,0)>N(G2))/COUNTIF(G$2:G$7,G$2:G$7&""))+1}.....................
I have a VBA form and on form initialize I want to populate a combo box… My array to populate it with could be a massive list so I need to set my array before it populates
I have this code so far but I need my array to be from A5 to the last row in sheet 1
I know how to set an exact range but not one that changes.
VB:
Dim myArray As Variant
myArray =
With Me.ComboBox1
.List = myArray
End With
Here is a sample of the data I need to populate in the combobox.
client_ref
A0008
A024
AA005
AA009
[Code] ....
I'm trying to populate a worksheet using arrays.
View 14 Replies View RelatedI have a complicated one here (at least for me)...
I have a very simple sample spreadsheet showing exactly how I'd like it to work but couldn't find out where to upload it? I can upload or send to you privately, if need be? May make it much easier to understand the desired end result.
I want to populate as follows:
Column A: "IN TIME"
Column B: "NAME"
Column C: "POSITION"
I have a date in cell D1 - today().
I need to search for that date in a column between range AA2 and BN2. When it finds the date (let's say it finds a MATCHing date in AA2), it will then search that entire column cells AA30:AA1920 and look for "server". When it finds "server" it will then grab the in time which will always be 4 cells directly above where it found the position ("server"), and then the name of the person, which will always be in column X, 6 cells above the position.
There will be multiple instances of "server", and I want to populate the columns A, B, C with all the servers it finds first for that day with their name, in time and position. then a blank row.
Then, I want it to find "Bar" positions using the same formula and method, and populate that right below the server data, then find "line", etc.
Ultimately, I'm trying to make a daily staffing plan, where all the people that are working on that date, it will show their in time, name, and position in columns, A, B, C as far down as necessary.
However, I'd like them auto grouped together by position, so I'd like the formula to somehow populate all the servers first, then all the bartenders, then hosts, then line, etc.
I have a range of cells that I want to use as column headings. Say the range is A1:A100. I need them to be able to be transposed across the first row of the sheet. Now I know that I can use the transpose function in a cell but this array is embedded in a macro.
View 3 Replies View Relatedi've come across something that i'd like to do with regards to populating an array/variant not using a global variable.
i currenty have this for testing purposes which works, but perhaps not the best solution?
Private vntArrayCodes() As Variant
Sub populateVntArrayCodes(ByVal intArrayCount As Integer, _
ByVal strCode As String)
Redim Preserve vntArrayCodes(intArrayCount)
vntArrayCodes(intArrayCount) = strCode
End Sub
Is there another way to do this without using a OO Classes?
I am trying to take selected items from a listbox and put the selected items into an array. Basically I am trying to put the selected items into a variable that I can pass to other modules. I am close but something is off. I can't tell if it's the variable declaration or the code.
I get Run Time error 91. Object variable or with block variable not set
Here's what I have so far...
[Code] ......
Trying to load an array from user selected items in a listbox
My code returns Type Mismatch error
I don't know why as a I did not declare type for the array I thought treated as variant so should accept any values?
Debug:
arrSelected(intI) = .Selected(intI)
Private Sub btnOK_Click()
Dim arrSelected
Dim intI As Integer
With Me.lstAccounts
For intI = 0 To .ListCount - 1
If .Selected(intI) Then
arrSelected(intI) = .Selected(intI)
End If
Next intI
End With
I only want to include the Month of January in a sumproduct function on another page using a name manager array.
I was thinking of using
=SUMPRODUCT(INDEX(DATA,0,17),--((MONTH(INDEX(DATA,0,5)=1)*INDEX(DATA,0,17))
Where the dates are in the 6th column and include blank cells at the bottom and in the first row it says Date.
I need to check each of 13,000 job titles to see if they include the string "VP".
For the time being, I want to find the most efficient way to check an individual title, before building an array or SUMPRODUCT function that will check all the titles in swoop.
So... I have tried:
=ISNUMBER(SEARCH(A1,B1))
..but it returns TRUE if A1 and B1 are both blank -- which they can be in my spreadsheet.
And I have tried:
=SIGN(SEARCH(A1,B1))
but it returns #N/A if A1 cannot be found within B1.
If I can, I want to avoid introducing an IF statement because, looking ahead, I am already concerned that this analysis will be complicated enough without multiple paths.
So.. what's the most efficient way to return a TRUE/FALSE, or 1/0, result depending on whether A1 is in B1?
EXTRA-CREDIT!
An extension of the above problem... arrays and SUMPRODUCTs welcome:
What's the most efficient way to return a TRUE/FALSE, or 1/0, result depending on whether (A1 or A2 or A3... or A99) is in B1?
could provide me a loop function in VBA for these calcultions.
Cell A1*E1 + B1*F1 + C1*G1
Cell A2*E1 + B2*F1 + C2*G1
......till
CellA100*E1 + B100*F1 + C100 * G1
These are the calculations for E1-G1.
The process must be repeated till E50-G50
So the second step is:
Cell A1*E2 + B1*F2 + C1*G2
Cell A2*E2 + B2*F2 + C2*G2
......till
CellA100*E2 + B100*F2 + C100 * G2