I have a workbook with some complicated formulas. One worksheet within the workbook is very slow to calculate. I'm Ok with that because it has a lot of work to do. The problem is that I would like the worksheet to only recalculate when I'm on that worksheet.
The default options provided by Excel only appear to deal with the entire workbook, which affects every workbook. Currently, Excel is set to Manual - Recalculate workbook before saving. Opting to save or use SHIFT+F9 every time I make a small update on an unrelated worksheet, is not realistic. The automatic options are too slow.
Does anyone know how to set Excel to just update the current worksheet?
Plan B, does anyone know how to just set the recalculate options for each workbook?
Shift + F9 to calculate the current worksheet.
Related
Current formula:
=IF(AND(N2>B16,L2>O2),SORTN({L2,N2,O2,Q2},1,0,2,FALSE),"")
Additional Information:
above formula is in cell R2 to have output in R2-U2
L2:Q2 are dynamic and may change one or more times a day
SORTN was how i managed to get the output I wanted but not a requirement
Problem:
I'd like to find a way to log historic values in the R2-U2 range by copying the R2:U2 values downward to R3:U2 and so on when new values are populated into R2:U2. Keeping all the data in descending order from newest to oldest. Is there a non-scripted solution that may be able to accomplish this?
That cannot be done with a spreadsheet formula, because formula results only depend on the source data you give through parameters, and will change dynamically when the source data changes. You cannot use a formula to create static values that remain the same forever to archive those values in the spreadsheet.
In other words, you will need a script. See Apps Script copy row value in History Sheet to first empty row for an example of how to do that.
Simplified scenario:
Sheet Customer_Orders, has blocks of rows with each row having product code, count ordered, and size. Bunch of other stuff is looked up/calculated on the basis of these three tidbits. By the end of the season this sheet has about 5000 rows.
Sheet Raw_Inventory has start of year in the first 500 rows, and then does a query to Customer_orders. By season end this sheet has about 2000 rows.
Near as I can tell, this query runs every time I change one of the 3 fields in Cust_Orders.
Sheet Inv_Status is a pivot table that runs against Raw_Inventory, and again, I think that every time Raw_Inventory is modified, the pivot table is recalculated. (There are a couple of other pivot tables that use the same data.)
The result is that making a change on Cust_Orders can result in up to 2 minutes while the calculations catch up.
(Hardware: Mac Pro, 24 GB ram, 3.2 GHz, 4 core; Current version of Chrome running under Yosemite)
What I would like to do is one of the following:
Lengthen the time between updates.
Be able to recalculate sheet Raw_Inventory manually.
A partial workaround:
I've created a new sheet that imports raw_Inventory. This copy is used for the pivot table. ImportRange only runs every 30 minutes.
The next step will replace the query with 1 zillion simple assignment statements. I'm hoping that this will replace querying 3000 lines with querying a single line when I make a change in Cust_Orders.
There is no way to disable automatic recalculation in Google Sheets. One option is to replace the formulas by the values either by using copy/paste as value only or by using a script. The advantage of using a script is that it also could be used to add again the formulas when needed.
Related
Ho do I stop and start autoupdating in Google Sheets?
Formulas always recalculating when refreshing/loading spreadsheet
I had a similar problem, I solved it by creating an enabling cell and in that cell I put 0 or 1 and then I used that cell inside the formula. In such a way that:
A
B
1
enable formula
0
2
= if(B1=0; 0; complex_formula1)
= if(B1=0; 0; complex_formula2)
3
= if(B1=0; 0; complex_formula1)
= if(B1=0; 0; complex_formula2)
This way when I need to change the spreadsheet I disable formulas (putting 0 on A1), change spreadsheet and on end I enable formulas (putting 1 on A1).
It's not the best solution, but it worked for me.
This is not an answer to my original question -- how to control recalculation, but is a workaround, and ultimately a better solution.
Quick restatement of problem:
CustOrders pulled descriptions of inventory off of RawInv sheet.
RawInv updated from CustOrders. This wasn't quite a circular dependency, as RawInv only updated quantities from CustOrders. But it meant that anytime a change was made in CustOrders, RawInv needed to be recalcuated.
This was made worse by having one query per line creating descriptions.
The solution amounted to refactoring.
Another spreadsheet was created, CustSupport.
It kept RawInv and Trees -- the latter being the descriptions. It also had the master reference sheet for prices and round off tables. These two tabs are rarely changed, and are copied as needed to sheets that use them.
It imported a copy of CustOrders. Since this copy had no dependencies back to to main ordering sheet, I didn't have to wait for it to recalculate.
RawInv recalculated from this copy of CustOrders.
I did a wholesale replacement of Querys with VLookups. This required some rearrangement of columns.
I need to do a script that duplicates a sheet (only with values and format, I don't want to copy the formulas) on a daily basis and gives to the new sheet (copy values) a name that is in the source sheet (today date). Is that possible?
Thank you!
Yes it is possible, you will first need to create a program which will only copy the values and format and make sure that the program has assess to the sheet. Then add a function that will do this everyday.
click here to look at a example of a program to copy and paste
By the way I created this program for Excel since I don't really use Google Sheets but it's basically the same thing.
My goal is to write information in one column, and have it duplicated to another column. Lets say I have my data in cell =A3. I would like this data to automatically be copied into cell =Z50. The only way I know to do this without manually and writing the data or copy and pasting the cells is to go to cell =Z50 and in the function bar set it equal to =A3. I was hoping someone might know of a way to automate this process. By setting the column Z equal to the A column with the same row.
I was looking for the same thing, and even though I haven't tried the ArrayFormula solution, this could be another way to get this automatically copying done:
=QUERY(MySheet!B1:B100,"SELECT *")
Use this formula where you have planned to get the information copied.
"MySheet!B1:B100" = This will be the sheet you want to get data copied from.
"SELECT *" = This will get everything in this interval copied, in case you want any specific data into the interval, you have the option of choosing as well.
I found this tip at: https://productforums.google.com/forum/#!topic/docs/31xTcOHNRJM
This formula might work in cell Z50 (or anywhere else on the sheet that you want the data copied to):
=ArrayFormula(IF(A3:A="",,A3:A))
I have spreadsheet with two sheets: current_sheet and archive_sheet.
I also have a script (which I created) which removes data from current_sheet and appends it to archive_sheet once per month.
The sheets have an arrayFormula, and after every monthly move operation, cells with this arrayFormula wind up without any results - and I receive a warning message, indicating that I should press Ctrl+Shift+E in order to resolve the problem.
Once I've done so - the formulas work again. What I'm wondering is... how can I alter my script so that I don't have to provide this manual fix every month?
use a time driven trigger to run your script each month
Instead of using script to move your data each month, try copying the values, then clearing the original data and reinitialise the formula. Without seeing your formula and have a clear understanding of what your doing, im kinda punching in the dark.