ArrayFormula not working as expected - google-sheets

My original array formula worked fine:
=ArrayFormula(if(E3:E="NULL"),"Unknown",E3:E))
With this formula whenever the sheet imported data that expanded the number of rows, the array formula would fill down.
But this new formula does not. The formula calculates for the cell in which it is typed, but does not automatically copy down:
=ArrayFormula(if(or(E3:E="NULL",ISBLANK(E3:E)),"Unknown",E3:E))
How can I edit my second formula to copy all the way down the length of the document?

In array formulas instead OR() use ADD() or the + operator
=ArrayFormula(If((E3:E="NULL")+ISBLANK(E3:E),"Unknown",E3:E))

Related

Array formula to fill a sequence of n numbers in a column

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))}

Apply same formula to every cell

I have a sheet with several numbers, which I want to convert to percentage. These are scores imported from a form, where the maximum score is 5.
According to the bellow image, the cell B2, I applied a basic formula =(3/5)*100% to convert three to 60%.
In order to avoid copy and paste the same formula into all cells, is there any formula to find all the cells and apply its value, divide per 5 and multiple per 100%? I thought something similar to Javascript such as (this/5)*100%.
https://docs.google.com/spreadsheets/d/1ZtqJaXy1pHkjk1sywGfSodo0FcOoLlkou79cZBk-jmU/edit?usp=sharing
you could treat it as array and on Sheet2 use:
=ARRAYFORMULA(IF(Sheet1!B2:AA="";;(Sheet1!B2:AA/5)*100%))
demo sheet
I've also looked for a solution to this for some time.
I don't think it's possible as a cell can only hold one value and the moment you try to change that value, it will delete the value.
Your best bet is to create a different table on the same sheet that references the specified values, then copy and paste the results (values only).
Just create a second Sheet, then in cell B2 of Sheet2 use the formula =Sheet1!B2/5*100%.
Then copy the formula to all cells of Sheet2.

Is there any solution to left the cell empty

i have a sheet along with this question,the formula used in column E2 is : if(and(d2>=0,d2<=2),5. So when the column is blank it gives the value 5 My query is can we left the "E" column blank when there is no value in "D". ??? 5 must displayed only if there score between 0 & 2.
https://docs.google.com/spreadsheets/d/1XpdXcWDReB8TGvZ6ocALAilVPLDKzZXvd90YhNos0Io/edit?usp=sharing
Iker. I've added a sheet with two approaches.
If you want to drag the formula, just set an initial IF that rules out blanks like this:
=if(D2="","",if(and(D2>=0,D2<=2),5,if(and(D2>=3,D2<=4),0)))
I placed this into my sheet, E2, and dragged down as you were doing.
However, this is a great example of where array formulas are handy. An array formula can "run" your whole column from just one cell. I placed the following array formula into cell I1 of my sheet:
=ArrayFormula({"POINT";IF(H2:H="","",IF((H2:H>=0)*(H2:H<=2),5,IF((H2:H>=3)*(H2:H<=4),0,"")))})
First, keep in mind that array formulas must have unused space below them in order to fill in results. If you type anything manually below an array formula, inside the range it is trying to work on, you'll get an error. If you do want to put other data below an array formula, just limit the range in the array formula (e.g., change every H2:H to H2:H6 or whatever the end of that data range might be).
ArrayFormula() tells Google Sheets to apply this formula to the entire range in the formula. Since the range in the formula is H2:H, every cell in I2:I will be "reserved" by this array formula.
The curly brackets {} allow us to build another custom array inside the first array.
Since I want a header in I1, I put that header name first in the curly brackets. The semicolon tells the array to put the next part underneath.
The next part may look strange, but it's basically the same as your original formula, except that AND(), OR(), etc., don't work inside arrays. So the logical operators inside arrays are different. In this case, an asterisk * means AND.
The same conditions from your original formula are used here. And if it meets none of those criteria (for instance, if someone entered -1 or 7 or M somewhere in Column H, the last part of the last IF would just assign a blank.
You can use an added IF to your formula
=IF(D2="","", if(and(D2>=0,D2<=2),5,if(and(D2>=3,D2<=4),0)))

How to write a formula that would work in different rows?

I'm trying to make a Google spreadsheet where I want the sum of the values in the row to appear in the AH cell of that row.
The row would be populated with letters like L or X and I'm using COUNTIF to give value to the alphabet characters.
For example,
=COUNTIF(C4:AG4,"X")*9 + COUNTIF(C4:AG4,"L")*12
How can I write the range such that it looks at cells C through AG from the same row the formula is in rather than change it for every row?
You don't need to change the formula, if you write that formula in one cell and then you drag the little square at the bottom right of the cell, excel will automatically change the row number
Just copy downwards:
As you see, the row index changed to 5 automatically.

Insert formula through google sheet column

lets say I have a column of URLs in A, I would like to have a script that would insert a formula into the next column over so that it would look like the attached image.
I know how to insert a formula into a single cell through script, but unsure of how to get it down the entire column relative to the cell to the left.
You can use array formula like this:
=ARRAYFORMULA(IMAGE(A2:A))
or you can wrap it in an if statement to only pull in the images where there is a valid url present with:
=ARRAYFORMULA(IF(ISURL(A2:A),IMAGE(A2:A),))
ArrayFormula is good solution. I prefer limiting the used range by it's size. If your data has no blanks, you could also use this formula:
=ARRAYFORMULA(IMAGE(OFFSET(A2,,,COUNTA(A:A)))
Paste it in cell B2.
offset + counta will give range A2:A6 in your case.

Resources