We are trying to display a year's (12 months) worth of data on a chart. It is close to working but the labeling of the month is weird. It seems like random months are labelled and some are not.
We figured out how to make it work but don't understand why.
We are using a StaticDateTimeTickProviderSpec. When we set the format arg only (ex: "MMM"), it doesn't label some months. When we set the transitionFormat arg it works.
What is the difference between "format" and "transitionFormat"? The online docs are somewhat minimal.
Thanks,
Mike
Related
I'm trying to convert a bunch of spreadsheets from Excel to LibreOffice Calc and I have one formula that works perfectly in Excel and I even tried Google Sheets but it gives a #NAME? error only in LibreOffice Calc. I think it's something to do with the " " or maybe missing $ but I've tried a bunch of troubleshooting with no success. I'm new to Calc so maybe I'm missing a formatting rule...
The formula is supposed to create a min/max date range for an alphanumeric code that could be anywhere inside a cell in the range. It's used to show when an action started and when it stopped. It works perfectly in Excel and Google Sheets but not with Calc.
=TEXT(MINIFS($master data.H:H,$master data.AE:AE,"*"&B3&"*"),"yyyy")&" - "&TEXT(MAXIFS($master data.H:H,$master data.AE:AE,"*"&B3&"*"),"yyyy")
The formula should return something like 2003 - 2004 but instead it returns 1899 - 1899 for everything.
This version of the formula works perfect in Google Sheets:
=TEXT(MINIFS('master data'!H:H,'master data'!AE:AE, "*"&B3&"*"),"yyyy")&" - "&TEXT(MAXIFS('master data'!H:H,'master data'!AE:AE, "*"&B3&"*"),"yyyy")
The problem is your sheet name is 'master data', which has a space in between. Different program quotes differently.
For Calc, you should use single quote after the $, like this:
$'master data'
So your formula should be something like this:
=TEXT(MINIFS($'master data'.H:H,$'master data'.AE:AE,"*"&B3&"*"),"yyyy")&" - "&TEXT(MAXIFS($'master data'.H:H,$'master data'.AE:AE,"*"&B3&"*"),"yyyy")
In the future, if you run into issues with formula, you should break down the long formula, and try to solve each issue as you encounter it. So for this case, I simply tried to see how Calc would reference another sheet by entering = then click on a cell (say A1) in "master data". The result was:
=$'master data'.A1
With Populate a Full Month’s Dates Based on a Drop-down in Google Sheets how to I was able to list all days of a month next to each other.
=TRANSPOSE(ARRAY_CONSTRAIN(ArrayFormula(date($A$1;MONTH(A2&1);1)+transpose(COLUMN($C$1:$BK$1)-3));DAY(EOMONTH(date($A$1;MONTH(A2&1);1);0));1))
What do I need to change in the current formula to list them below each other?
I am going to take a wild guess and say Erase the word "transpose()"
=(ARRAY_CONSTRAIN(ArrayFormula(date($A$1;MONTH(A2&1);1)+transpose(COLUMN($C$1:$BK$1)-3));DAY(EOMONTH(date($A$1;MONTH(A2&1);1);0));1)
Remove the TRANSPOSE function invocation:
=ARRAY_CONSTRAIN(ArrayFormula(date($A$1;MONTH(A2&1);1)+transpose(COLUMN($C$1:$BK$1)-3));DAY(EOMONTH(date($A$1;MONTH(A2&1);1);0));1)
EDIT
(Following your commentHow to vertically list all days of the month in Google Sheets)
I gave it a try but I got a Parse error.
ALWAYS CHECK YOUR LOCALE (when using copy/paste)
In your case you ONLY have to change , to ;.
So the formulas will be
For Horizontal
=TRANSPOSE(SEQUENCE(DAY(EOMONTH(A1&A2;0));1;A1&A2;1))
For Vertical
=SEQUENCE(DAY(EOMONTH(A1&A2;0));1;A1&A2;1)
Use twice and format accordingly.
Original answer.
Instead of that long formula try this one.
For Horizontal
=TRANSPOSE(SEQUENCE(DAY(EOMONTH(A1&A2,0)),1,A1&A2,1))
For Vertical
=SEQUENCE(DAY(EOMONTH(A1&A2,0)),1,A1&A2,1)
Use twice and format accordingly.
That`s great but the dates I am getting are not in a chronological order since their "code" is something like 44324 and they are order by it.
I am newbie in this crystal report. I would like to change the font size to be 5mm in this 0U482 in the sample data below:
82115-0U482-MA 000002
From searching the google and study in internet, this is what I found to do it. But I'm not sure how to make it working for me. Any help will be highly appreciated.
Make a new formula called modelno1 to find the word after first -
Code this into the new formula left({modelno},(len({modelno})-InStr({modelno},"-"))+1)
Make another formula called modelno2 to get only 5 character only from previous formula
Code this into modelno2 left({#modelno1},5)
Make the font size to 5mm
The code for font size is stringVar modelno1 := '<b style="font-size:5mm";>'#modelno2'<b>'
Sorry if my English is bad.
Thank you
Just an update,
I managed to make the code work as I want.
Thank you God.
The solution is:
Change the 6th step code into
'<b style="font-size:5mm";>'&left({#modelno2},5)&'</b>'
Change the paragraph formatting in the formula field to HTML Interpretation.
You should be good to go!
Cheers
I have a bunch of images with different create dates. I want to normalize them all to a given date (say today's date) using a batch file (Windows). Can ExifTool set dates? I only see documentation and examples for shifting dates. To shift the date to present, I would need to somehow read the date for each file, calculate the difference, and then shift. That would be ok, but I don't know how to read the create date into a variable using ExifTool.
One obstacle for me is that I don't speak Perl. I do Python, and there is pyexiv2. This allows to write the "date", but I can't see anywhere if that is just create date or all dates.
Edit
Here shows using, for example,
exiftool -AllDates='2010:08:08 15:35:33' -overwrite_original IMG_01.jpg
in Ubuntu linux, but I could not get that to work in Windows.
As a hack, I tried
exiftool -AllDates+=2015:03:02 IMG_8220.JPG
which set the dates to the time executed, probably because the shift was so completely crazy. But I'd like to have control, and, specifically be able to change YYYY:MM:DD without changing the time.
Consequently, help still appreciated.
I crossposted to the ExifTool forum, and ExifTool author Phil Harvey responded that you need to use double quotes. The single quotes from the linked blog post don't do it in Windows.
So, one would use
exiftool -AllDates="2010:08:08 15:35:33" IMG_01.jpg
I tested it and (of course) it worked.
Apologies for yet another date/time related post. I haven't got my head around this yet, so any comments welcome. Executive summary: Excel can be used to work with small elapsed times (athletic event times, and so on), but Sheets can't, because you need to write a script to display small times, and the script screws something up so that Sheets no longer treats the cell as a time when the time is later manually changed.
The times I need are normally short, in the region of a couple of minutes, with seconds to 2 decimal places. I have to do arithmetic on these times (normally only comparisons to another time).
We currently store everything in Excel, which works fine. If you define a custom display format in a range, and then enter times as something like 2:43.02 (2 mins, 43.02s), then the cell still contains a time, and Excel can do arithmetic on those times.
I then upload the Excel spreadsheet, and open it in Sheets. There is no built-in formatting extension, as there is in Excel, so I have to use an extension function to display the time as 2:43.02, for example (see below; the function calls setNumberFormat). In the new Sheets version of the document, Excel times are still times, and comparison works, and everything looks right.
Here's the problem. Everything only works until you manually enter a new time into a Sheets cell. If I enter 2:41.05, for example, the cell no longer contains a time object, and all arithmetic is broken. So, I can't use Sheets to replace Excel. I have to keep everything in Excel and upload it occasionally, keeping the Sheets version as read-only.
There's some magic in Sheets which determines whether a cell contains a date or not. If I use a built-in time format, then Sheets knows it's a time, and can do arithmetic if the time is manually changed. If I change the time format using the function below (from here), then that magic is lost, and I can't manually change the time.
function EditFormat() {
var oldname = SpreadsheetApp.getActiveRange().getNumberFormat();
var name = Browser.inputBox("Current format (blank = no change):\r\n"+ oldname);
SpreadsheetApp.getActiveRange().setNumberFormat((name=="")?oldname:name);
}
Question: is setNumberFormat broken? Is there a better way to do all this? Can I do something else in the script which retains the cell's magic status as a time? Or do I have to go back to Excel?
Thanks.
This is due to a (sadly long-standing) Sheets bug whereby the parser fails in two respects:
The format 2:43.02 is not successfully coerced into a time value, but the format 0:02:43.02 (or 0:2:43.02) is.
Even so, the hundredths of seconds are ignored for directly entered values.
Both points apply for all values in the spreadsheet, however only point two applies for directly entered values. So a workaround is to enter via a formula:
=VALUE("0:2:43.02")
or you could have an input column that is formatted as plain text, and then have a display column that similarly converts to a time value via formula (and this display column would be custom formatted). Or, you could have a helper script that presents an input box for the active cell, where you enter the split time, and then creates a formula like above and populates it in the cell (the set number format could be built in to this script as well).
I wish these workarounds were unnecessary.