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.
Related
I am trying to figure out how to add +8hours to a schedule formatted with a text in front and a dash in between the hours. Please see example below:
Training 01:45AM - 02:45AM
Convert that time to +8 hours.
Training 09:45AM - 10:45AM.
I just cant seem to figure out the best formula to use in this scenario.
Supposing the raw data string from your post were in A2, this should work:
=REGEXREPLACE(REGEXREPLACE(A2,REGEXEXTRACT(A2,"(\d.+M) -"),TEXT(VALUE(REGEXEXTRACT(A2,"(\d.+M) -"))+TIME(8,0,0),"hh:mmAM/PM")),REGEXEXTRACT(A2,"- (\d.+M)"),TEXT(VALUE(REGEXEXTRACT(A2,"- (\d.+M)"))+TIME(8,0,0),"hh:mmAM/PM"))
In short, this formula uses REGEXEXTRACT to pull each time from the string, convert it to a value, add eight hours, convert it back to TEXT and finally reinsert that transformed substring back into the original string with REGEXREPLACE. Because this happens twice, you'll see two such setups, one wrapped within the other.
I'm trying to use Google Sheets to concatenate a bit of data. It works 90% of the time, however on certain numbers, I get an odd result. I have to copy the result of this data and paste it into a financial program in a specific format and am using the concatenate formula to do this. The format the program requires is that each field be separated by one period, even if it is a dollar amount as the program will automatically move the decimal point two places to the left while it is evaluating the information. The issue is that on some numbers the formula adds two periods between the fields, which stops the evaluation of the data in our financial program.
Here is a screenshot including the formula
You can see that it works with most numbers in the amount column, but with two of the amounts and several others, it adds two periods after the amount.
Would you please take a look at this and see if you can help me find the issue?
Thank you!!!!
Looks like it's an existing floating point calculation error in Google Sheets, the multiplication by 100 did not return exact value for certain numbers but with extra very small decimal. That's why there's an additional period on the result.
As a workaround, use ROUND() upon multiplying by 100 to "snap" it to an integer.
Sample:
References:
Floating Point Calculation Error
use just:
=B2&"."&ROUND(C2*100)&"."&D2
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:
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().
I have stringgrid on delphi form and i am trying to divide values of one cell with value of another cell in another column.
But the problem is, stringgrid cells are populated with different types of numbers, so I am getting ConvertErrors.
For example the numbers in cells can look like
0.37 or 34 or 0.0013 or 0.00 or 0.35 or 30.65 or 45.9108 or 0.0307 or 6854.93.
In another words I never know is it going to be real, float, integer or any other kind of type in those cells.
I have looked everywhere on internet but no luck. Anyone any ideas. By the way I am not exactly Delphi expert. Thanks.
For each string, convert it first to a float value using StrToFloat function in SysUtils.pas . This should allow for any numerical type to be dealt with (unless you have something unusual like complex numbers). As you have some zero values in your list above you should also ensure that you check for divide by zero conditions as this will also potentially throw an exception.
SysUtils has many functions such as TryStrToFloat, TryStrToInt, TryStrToInt64 etc for this purpose. These functions accept a reference parameter (var parameter) for returning the converted value and function itself returns true if the conversion is successful.
If you are sure that the string has a valid number then you can check the input string to see if it has a decimal point before deciding which function to use.
Treat all the numbers as float. Use StrToFloat, divide the numbers, and then convert the result back to string with FloatToStr. If the result is an integer, no decimal point would be produced.