In the following sheet, the sumproduct of a row with a column (which has a condition) is 2. Why 2? I've read through the sumproduct docs, and it's not clear to me what happens in a situation like
This is because the value of each column is added to the value of each row and the result is an array:
5,6,7
6,7,8
7,8,9
which is compared to 6 and results in an array:
0,1,0
1,0,0
0,0,0
Related
I have a Google sheet that has a sequence of numbers in the left column:
I'd like to write an array formula in A1 that automatically adds the next number in the sequence when a new row is added to the sheet.
For example, if I add a row 8, an 7 (the next number in the sequence) automatically fills in cell A8. I've tried this with the Sequence function, but that requires a pre-defined number of rows. I've also tried to do an array formula that uses something like "A3=A2+1", but I can't get the syntax to work in an array.
Try the following in cell A1:
={"Sequence";sequence(rows(A2:A))}
I have a sheet like this how can make a cell in front of x under the sum column get the sum of the x count column and y get the sum y count column
of course, I use sum function on both but the issue I face is how to make the z ,x1,y1,z1 the same I try to fill it down but as you see in the picture it is wrong
how can I do it for 100 row ?
This formula seems to give the result you want:
={"Header","Sum";
ARRAY_CONSTRAIN(TRANSPOSE(D1:1),COUNTA(D1:1),1),
ARRAYFORMULA(MMULT(TRANSPOSE(N(D2:AJ10)),{SEQUENCE(ROWS(D2:AJ10),1,1,0)}))}
It places the two column labels in the first row, then transposes all of the header values into a vertical column in A2:A, but prevents any blank rows by using ARRAY_CONSTRAIN, and a check for the number of header values to transpose.
The main result is the Sums, calculated using MMULT. You need to enter the range of the cells you are going to sum over - I've used D2:AJ10, entered twice in the formula. MMULT can slow down performance the more cells it has to review, but this seemed fine for 33 columns by 9 rows. Test it out in your actual sheet, and report back if any issues.
REFERENCES:
ARRAY_CONSTRAIN To limit size of an array result, by # rows and # columns
MMULT The matrix product of two matrices. Can be used for summing, if one matrix is one dimensional (eg. a row or a column) with values of just 1.
I use this formula to print a yes in a cell if there are numbers >0 in the range $T4:$AE4 OR in the range $AG4:$AR4.
=IF(OR(COUNTIF($T4:$AE4,">0"),COUNTIF($AG4:$AR4,">0")),"yes","")
Then I drag the formula down (as I need this for a 1000 rows).
Is there a way to just have the formula for the first row and automatically populate the cells below if the rows below match the criteria?
I tried with an ARRAYFORMULA but it's not working..
=IF(OR(ARRAYFORMULA(COUNTIF($T4:$AE,">0")),ARRAYFORMULA(COUNTIF($AG4:$AR,">0"))),"yes","")
Try this formula:
=ArrayFormula(if(TRANSPOSE(MMULT(COLUMN(T4:AE)^0,TRANSPOSE(if(ISNUMBER(T4:AE),T4:AE,0))))+TRANSPOSE(MMULT(COLUMN(AG4:AR)^0,TRANSPOSE(if(ISNUMBER(AG4:AR),AG4:AR,0))))>0,"yes",""))
Explanation
mmult is used to make sums of $T4:$AE and $AG4:$AR
ISNUMBER is to convert all not numeric values into numbers in order to use only numbers in mmult function.
COLUMN(AG4:AR)^0 will give a column of ones (1,1,1,1,1) -- just what we need for mmult function.
Transpose is used because in [mmult] function:
the number of columns for matrix1 must equal the number of rows for
matrix2
so we need to transpose part of formula.
By the way, here's this formula but transformed to count matches of the word "word":
=ArrayFormula(if(TRANSPOSE(MMULT(COLUMN(T4:AE)^0,TRANSPOSE(--(T4:AE="word"))))+TRANSPOSE(MMULT(COLUMN(AG4:AR)^0,TRANSPOSE(--(T4:AE="word"))))>0,"yes",""))
As you can see, the principles of the formula can be used to match count logic.
I have a sheet with multiple rows. There is a cell on each row that says "In" and "Out" in a dropdown. Basically this is plus and minus. Next to that I have a cell that that holds an amount.
So it looks like this:
Item 1, In, 10
Item 2, Out, 5
This totals a profit of 5.
How can I with this setup calculate the total profit/loss for all the cells in the sheet depending on multiple in/out rows?
An if formula will calculate the rows and a sum formula will calculate the column.
First make the numbers positive and negative values.
=IF(B2="In",C2,C2*-1)
This formula in 'D2' checks if the value of 'B2' is "In".
If yes then just adds the value of 'C2'.
If no then it multiplies the value of 'C2' by negative one.
Second step is to add up the numbers.
=SUM(D2:D3)
Cell 'D4' sums the column.
I'm using Google Spreadsheets. I'll be using this image from a very similar question.
http://i.imgur.com/jqcNW.png [a link]Google Spreadsheet Formula to get last value in a row
Instead of giving the value, I want the Column top to show. So the H column would look something like: 2 1 3 1 4
(The product numbers from Row 1)
If it helps =index(B2:G2;1;counta(B2:G2)) was the answer given to the original question. My values would be words instead of numbers. It'd need to track the last 'Yes' in the row with the column top being dates.
I think this should be easy:
=index($B$1:$G$1;1;counta(B2:G2)) - if you write this to the H2 cell, it should search the "N"th element in the FIRST row ($B$1:$G$1) - where N represents the value of non-empty cells in that row (B2:G2).
You can then populate this H2 formula downwards.
Let me know if this helps.