Inconsistent display of zero value - google-sheets

I have several cells which are formatted to hold "Accounting" values. Their values are all defined using some variant of this formula:
=sum(SomeColumn1:SomeColumn1000)+sum(OtherColumn1:OtherColumn1000)
When the value is 0, most of the cells display as $ - . However, a few of them display as $ 0.00.
What is the cause for this inconsistency and what can I do to enforce the first format?

Try this:
=round(sum(SomeColumn1:SomeColumn1000))+round(sum(OtherColumn1:OtherColumn1000))
the 0.00's are likely non-zero values due to floating point errors further upstream in your sheet than that particular formula you're asking about.

Related

Problem reading variables containing mix of numbers and strings

I am reading an Excel file (see syntax below) where some of the fields are text mixed with numbers. The problem is that SPSS reads some of these fields as numeric instead of string and then the text is deleted.
I assume this happens in cases where a large part of the first rows are empty or with a numeric value and then it defines the variable as numeric.
How can this be avoided?
GET DATA
/TYPE=XLSX
/FILE='M:\MyData.xlsx'
/SHEET=name 'Sheet1'
/CELLRANGE=FULL
/READNAMES=ON
/DATATYPEMIN PERCENTAGE=95.0
/HIDDEN IGNORE=YES.
When you use the get data command, the subcommand /DATATYPEMIN PERCENTAGE=95.0 tells SPSS that if up to 5% of the values in the field do not conform to the selected format it's still ok. So in order to avoid cases where only very few values are text and the field is read as number, you have to correct the subcommand to:
/DATATYPEMIN PERCENTAGE=100

How do i stop google sheet from auto-calculation?

I have a sheet that will record delivery information. However one of the record we have right now have a barcode that start with equal (=) symbol(=00000-00). So whenever we fired our barcode reader at it. it return as 5 digits number (10000) with minus calculation instead of our office-use 7 digits number format. (10077-77)
From what i know, In excel you can turn auto-calculation off as simple as turning format into text for use manual setting for calculation. However that doesn't seems to be the case here for Google Sheet. Is there any workaround for this? I tried =right(B2, len(B2)-1) but all it does is removing first number out and ignore equal symbol entirely.
I believe the best workaround is to treat it like a string:
You also have the option of displaying formulas:
Yet if you use a value of =0000-00 or something with starting zeros, it will not display the zeros:

How to prevent Google Spreadsheet from interpreting commas as thousand separators?

Currently, pasting 112,359,1003 into Google Sheets automatically converts the value to 1123591003.
This prevents me from applying the Split text to columns option as there are no commas left to split by.
Note that my number format is set to the following (rather than being Automatic):
Selecting the Plain text option prevents the commas from being truncated but also prevents me from being able to use the inserted data in formulas.
The workaround for this is undesirable when inserting large amounts of data: select cells that you expect to occupy, set to Plain Text, paste data, set to back to desired number format.
How do I disable the automatic interpretation by Google Spreadsheet of the commas in my pasted numeric values?
You can not paste it in any number format, because of the nature of numerical format types. It will parse it into an actual number and physically store it in this format. Using plaintext type, like you are, is the way to go for this.
However, there are some options to perform these tasks in a slightly different way;
- you might be able to use CSV-import functionality, which prevents having to change types for a sheet.
- you can use int() function to parse the plaintext value into an int. (and combine this with lookup functions).
TEXT formatting:
Use ' to prepend the number. It'll be stored as text regardless of actual formatting.
Select the column and set formatting as `plain text.
In both the above cases, You can multiply the resulting text by 1 *1 to use in any formula as a number.
NUMBER formatting:
Keep Number formatting with ,/Automatic.
Here, though split text to columns might not work, You can use TEXT() or TO_TEXT()
=ARRAYFORMULA(SPLIT(TO_TEXT(A1:A5),","))

Use GoogleFinance Currency Conversion on Sum

I'm trying to use GoogleFinance currency conversion on a sum but can't get the correct format. My cell is as follows:
=SUM(((IMPORTRANGE("sheet-key","H2:H300"))/100*40)+(IMPORTRANGE("sheet-key","H2:H300")))
I want the results of the sum to be then converted from GBP into USD. I tried adding &GoogleFinance("CURRENCY:GBPUSD") to the end but that's obviously wrong. I can get it to work if I put the conversion in an adjacent cell but that's not what I want.
To begin with, just making sure that you understand the IMPORTRANGE function. Usually this function yields an array of data (in your case 299 values). But in your case this formula fails to yield the array. If the given formula...
=SUM(((IMPORTRANGE("sheet-key","H2:H300"))/100*40)+(IMPORTRANGE("sheet-key","H2:H300")))
...works, then you get only the result of the first cell (H2), i.e. just this: H2/100*40+H2. All the remaining cells (H3:H300) are not processed. Do you really want that? If so, then OK, just proceed to the solution.
If you actually want the whole range (H2:H300) to get processed you should use this formula:
=SUM(ARRAYFORMULA(((IMPORTRANGE("sheet-key","H2:H300"))/100*40)),ARRAYFORMULA(IMPORTRANGE("sheet-key","H2:H300")))
The solution.
To do a conversion you should multiply your result by the currency conversion rate using * symbol:
*GoogleFinance("CURRENCY:GBPUSD")
as opposed to
&GoogleFinance("CURRENCY:GBPUSD")
Note: GoogleFinance() is ever updating.

How can I use the OFFSET() formula with a range of values?

EDIT: Disclaimer about the XY problem: The actual, concrete problem I'm trying to solve is: How can I make "recursive" (is that the right term here?) formulas that use infinite ranges in Google Spreadsheets/Excel? The solution I'm working with involves the OFFSET() formula. I'm asking this question because I'd like to get an extensible understanding of the way formulas use and implement ranges, especially infinite ranges.
I'm working in Google Spreadsheets and trying to create ArrayFormulas that will automatically expand without needing to use the fill handle as new data is added in the requisite columns.
To do this, I want to use infinite ranges such as A2:A when I do calculations so that no matter how much data is added, I'll never have to drag-fill any data or formulas and I can just let the spreadsheet iterate and do the work.
I'm running into a problem, though, when I try to use these infinite ranges with the OFFSET() formula. What I'm trying to do is have each cell in the range pull values from a couple of the cells next to it (thus the offset), do a simple calculation with those values, and make that the new cell value. But because the formula interprets the instruction as attempting to offset an entire (infinite) range of values, it returns a #REF! error. Here's a shared example sheet that demonstrates what I'm trying to do.
https://docs.google.com/spreadsheets/d/1V3ldSBoCrzyVWcn66wFBkDOmxt6iuYgtiU_H4KQ6J14/
If for some reason you can't see the formulas, the formulas I'm using are:
C3 =ArrayFormula(Offset(C3:C, 0, -1) - Offset(C3:C, -1, -1))
F4 =Arrayformula(Offset(F3:F, 0, -1) + Offset(F3:F, -1, 0))
Both of these return a #REF! error. C3's alt-text reads: "Error: Result was not automatically expanded, please insert more rows (1)." F3's alt-text reads: "Error: Circular dependency detected."
I'm decently confident why these don't work - you're apparently not allowed to use and refer to ranges this way. I don't, however, know how to fix this.
The two use-cases in the spreadsheet are essentially the same thing, backwards. Chances are if I can figure out one I can reverse-engineer it to work for the other one, but I've had no luck so far.
I've Googled around a lot and while I've never found anything that solves this problem, a lot of similar problems seem to be solved by using the INDIRECT() function. I can't understand how this would apply here, though, that function seems to be strictly for parsing values dynamically from cells with variable input.
(I should probably mention that this data is on a back end sheet and it's getting pulled on another sheet to display some charts on the front end. I wouldn't ask a question here if this data was the only thing involved.)
Any help or a step in the right direction would be appreciated.
If I'm understanding your question, one way to make an offset function expand automatically is to attach a count function, eg. in excel
=offset(C2,,,counta(C:C))
However, this will give you a circular reference error. To address this issue, this is one solution that I have used:
"OFFSET(C3,,,MATCH(9.99999999999999E+307,OFFSET(C3,,,ROWS(C:C)-ROW(C3))))"
This function passes an array based on the last number cell in the column. And for it to be used properly, it needs to be wrapped in a function that can handle arrays, like SUM().

Resources