I'm trying to create an array for a simple linear regression problem in Excel and find the b1, b0 coefficient. My teacher gave us a worksheet with all the computation and used the following formula:
{=LINEST(SLRData!B2:B15, SLRData!A2:A15, TRUE, TRUE)}
(SLRData being the example worksheet with all the data on it).
However, when I try to implement it in a problem as
{=LINEST(B2:B20, A2:A20, TRUE, TRUE)}
(my problem has 20 variables in each column) it adds a ' to the beginning of the function so it does not compute. Also when I try to copy the {=LINEST(SLRData!B2:B15, SLRData!A2:A15, TRUE, TRUE)} from the example worksheet the "{}" disappears. Is there some specific way you implement this?
If I run the problem without the brackets it gives me a spelling error.
These are so-called array formulas and have a different input method: Ctrl+Shift+Enter
After pressing those keys, in the input field the curly brackets ("{}") appear around the formula.
For further research click here.
Related
Good morning. In post "Excel IRR: can I use it referencing a combination of cells and fixed numbers? IRR({-10,11+A2})" is said we can math inside {} using CHOOSE function. But if I have first payment (investment) in B1, 100, and rest of income in a range, B2:B6, (10,10,10,10,70), then, when I try
=IRR(CHOOSE({1,2};-B1,E2:E6))
I receive a #¡VALUE! result with ENTER or CSE. I use an spanish version of Excel 2013, where separator is ";" instead ",". I have try
=IRR(CHOOSE({1,2};(-B1,E2:E6)))
without success. Ideally I would like make some additional calculations in first cell, for example -B1+cell1+cell2 ...
Thank in advance
I'm trying to make an array formula work to sum data based on vertical and horizontal criteria in Excel. Here is the formula I've tried, but it's returning a #NAME? error.
=arrayformula(SUM(IF('By day'!$C$3:$GB$3='By week'!C$1,IF('By day'!$B$4:$B$395='By week'!$A3,'By day'!$C$4:$GB$395))))
Can anyone suggest what I need to change to make this work? I'm new to array formulas so any help would be greatly appreciated. I tried just pressing Enter and pressing Ctrl + Enter, and neither worked.
I also tried this, which is correctly summing based on the vertical range ('By day'!$B$4:$B$395) but doesn't take account of the horizontal range ('By day'!$C$3:$GB$3) - i.e. it simply sums all columns that match the vertical range:
=SUM(IF(('By day'!B4:B401='By week'!A3)+('By day'!C3:GB3='By week'!B1),'By day'!C4:GB235,0))
Thanks in advance!
I can almost always find an answer here for a problem, but not this time so I'm asking the community.
I'm having a problem with ArrayFormula not displaying the text in the True branch of an IF when the condition evaluates to True. Instead it displays the text associated with the False branch.
The array formulas are all on row 4. I thought it might be caused by one of them referencing row 5 instead of row 4 and showing the result from the next row but that isn't it.
I thought it might be a corrupted sheet but after recreating in a new sheet the problem was still present.
It is easier to show than to explain so I've provided the gsheet and a short screencast below. A link to the screencast is also in A1 in the gsheet.
https://docs.google.com/spreadsheets/d/1H7W__hM2L89faxIOZ23WgboXHgaWe0wYT20aWVr_vD8/edit?usp=sharing
https://www.loom.com/share/a867787fdc6044a3840125e288d4cb8c?from_recorder=1
Thanks much for taking a look...
AND formula is not supported under ARRAYFORMULA
use multiplication:
=ARRAYFORMULA(
IF(D4:D="",,
IF(D4:D<0, "No Profit",
IF(H4:H/(G4:G+1)*D4:D<D1,
IF((C4:C>C1)*(E4:E>(C1*3-1)), "Low Profit"&
TEXT(H4:H/(G4:G+1)*D4:D, "$00"), "Low Price"), H4:H/(G4:G+1)*D4:D))))
also note that anchoring $ in "true" AF is kinda pointless
I'd like to get the value of cell A1 from multiple tabs in my sheet. I attempted to use INDIRECT, only to be reminded that it wouldn't work in an ARRAYFORMULA. Is there some sort of "makeshifty" formula that would do the same thing?
This is what I originally attempted:
=ArrayFormula(IF(LEN(A2:A),INDIRECT(A2:A&"!A1"),))
Column A is a select list of the tab names in my sheet. So the first instance works, but of course, it doesn't populate down the column as I had hoped. I realize I can just copy the formula down the column, but some type of an ARRAYFORMULA would be ideal as I add rows to the list.
I found this answer, but don't see how I could apply it to my situation.
I also found this answer, but thought since it's 2.5 years old, maybe someone has discovered a clever way to avoid the drag of copying.
Answer:
You need to do this with a script or by using the drag method - INDIRECT uses a string reference and so can't be used with an array.
More Information:
Unfortunately for the user of INDIRECT with ARRAYFORMULA, a discovery of a clever method isn't the issue - the limitation of what can be done with only formulae that is the root of this problem.
Setting up a custom function:
From the Tools > Script editor menu item, you can create scripts. An example custom formula that you could use would be as follows:
function ARRAYINDIRECT(input) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
return input.reduce(function(array, el) {
if (el[0]) array.push(el[0])
return array;
}, []).map(x => ss.getSheetByName(x).getRange("A1").getValue());
}
Make sure to then save the script with the save icon.
In your Sheet you can then call this custom formula as so:
=ARRAYINDIRECT(A2:A)
Rundown of the function:
Takes the input range from where the formula is called - in this case A2:A
Reduces the input to remove all cells that are empty
Maps the name of the sheet which is stored in the cell to the value in A1 of the sheet it references
Returns an array to output
References:
JavaScript Array reduce() Method
INDIRECT - Docs Editors Help
ARRAYFORMULA - Docs Editors Help
I'm not sure what I missed as my arrays are not working. Here's the link:
https://docs.google.com/spreadsheets/d/1_pPSRjEnKv10mDR8LICVvVv7jgXVBJ1aWZ8KrdEIKd4/edit#gid=0
Please check highlighted in green.
Thanks
Im not sure how to explain why it doesn't work because there are a list of things - various ways in which array formula operates - but I would like to suggest to you to use regexextract instead of search: I created the two formulas for is profile and is live, hopefully I can try to explain what the pieces do:
in column Y:
=arrayformula(if(arrayformula(if(istext(regexextract(C2:C,"automated")),1,0))+arrayformula(if(or(istext(regexextract(C2:C,"clinic profile")),istext(regexextract(C2:C,"dr profile"))),1,0))=2,1,0))
in column Z:
=arrayformula(if(Y2:Y=1,if(istext(regexextract(C2:C,"live")),1,0),0))
Basically instead of using the search - regexextract will find your search terms anywhere in that text and it works well with array formula, then using the if and istext to give it a true of false value of 1 or 0.
if the value is not found in that corresponding cell, it would in theory return #N/A if it was in an individual cell - but if the value is there the regexextract would return that value to you, which why the istext works
By the way if Im confusing you , then if you want to change your sheet to be editable by anyone I can jump in and show you what I did..