How to automatically convert a date to a specific text string? - excel

I need to automatically convert in Excel a date to a specific string based on month and year.
Date to be converted ........... String to be changed to:
30-12-2018 06:00:00 PM ..... 12-December 18
29-12-2018 06:00:00 PM ..... 12-December 18
28-12-2018 06:00:00 PM ..... 12-December 18
30-11-2018 06:00:00 PM ..... 11-November 18
29-11-2018 06:00:00 PM ..... 11-November 18
Presented dates are provided for example purposes.
Do you know any solution to make this automatic?
I have already tried creating a separate sheet in the workbook where I manually wrote the association between the date and the string. Then I used VLOOKUP to bring the string to the area where I want to change the date.
But I want to send this report to end users and I don't want them to need to add new dates each time. Rather I want the file to update itself if possible.

In the cell formatting settings, you can use the custom date format string dd-mmmm yy for this. In my opinion, though, you'd be better off setting the cell's format to display dates according to the user's system settings.
I'm also assuming here that 30-12-2018 06:00:00 PM is a representation of a valid date value in Excel, rather than a free-text string. If not, then your actual problem is parsing this value as a date rather than displaying it in another format.

Related

How to convert date formats in excel (dd/mm/yyyy hh:mm:ss to mm/dd/yyyy hh:mm:ss) [duplicate]

How do I modify the following to be D/M/YYYY?
8/7/20 6:20 PM
8/17/20 4:24 PM
Currently it is M/D/YY
Here is what I have done to no avail:
=VALUE(LEFT(A2,FIND(" ",A2,1)-1)) - This is to extract the date portion (because excel sees it as text)
Tried to convert the date to a D/M/Y using 'text to columns' but that does not work. Excel sees the middle number as the date so anything over 12 and it throws an error.
Thank for any help on this. It's breaking me.
use:
=TEXTJOIN("/",,FILTERXML("<a><b>"&SUBSTITUTE(LEFT(TEXT(A1,"d/m/yy")&" ",FIND(" ",TEXT(A1,"d/m/yy")&" ")-1),"/","</b><b>")&"</b></a>","//b["&{2,1,3}&"]"))+MID(TEXT(A1,"\ hh:mm AM/PM"),FIND(" ",TEXT(A1,"\ hh:mm AM/PM"))+1,99)
and then format the output as desired.
Note: I am US based so I had to reverse it in the demo.
Another Note: If one is US based dealing with UK dates then change the d/m/yy to m/d/yy and it will work.

Convert date Excel

Trying to convert Italian date. I got dates from pdf like 21 Giu 2020 which I paste into Excel and then try to format cells and choose option "Date" and 14-mar-12 there but it does not respond. It does only when I change 21 Giu 2020 to 21.12.2020 then it is 21-giu-2020.
Is there any way to automate it, else I need to search upon Italian months and conver Ago to 08, Giu to 12 etc etc?
If your locale isn't Italian, I doubt that Excel would ever recognize a string like that as a date. Here is a formula that would create the date for you:
=DATE(RIGHT(A1,4),MATCH(MID(A1,4,3),TEXT(DATE(2020,SEQUENCE(12),1),"[$-410]mmm"),0),LEFT(A1,2))
The avobe usage of SEQUENCE requires ExcelO365. I also made the assumption your text is always in the pattern "dd mmm yyyy".
You'll end up with a date which you can then use number formatting of your liking.

How we can extract Day, Date, Time in Excel which is in the format of following Fri Aug 07, 2020 05:12 UTC?

Long Date
Fri Aug 07, 2020 05:12 UTC
Day | Date | Time |
Friday | 07:10:2020 | 05:12 |
to get the date from that string use:
=--MID(A1,5,LEN(A1)-8)
Put that in three cells. Then format the cells:
day cell: dddd
Date Cell: dd\:mm\:yyyy
Time Cell: HH:MM
You could use the following to put the text string into just a date time format that excel understands:
=DATEVALUE(RIGHT(LEFT(A1,LEN(A1)-4),LEN(A1)-8))
The above will not be affected by number of digits for year, day or hour; only that the bit it is using has 4 chars at the front (Fri and space) and 4 at the end (space and UTC).
Since you have two digits for both day and hour, this could be simplified with using MID, like:
=DATEVALUE(MID(A1,5,LEN(A1)-8))
To extract a date from a text string representing a date, you can use the DATE function e.g. =DATE([year],[month],[day]).
To get those parts from a text string you can use =MID([input text string], [start position], [number of characters]). So you could do MID for each component (year, month etc) needed, then put the results through the DATE function.
Date formats in Excel are distinguished between what is stored and what is displayed.
What is stored depends on your excel settings.
What is displayed depends on your excel settings as well as your "regional and language options" or equivalent settings in your computer's operating system.
To change what is displayed, set a custom format (ctrl-1, first tab, last list item) to something like Ddd Mmm dd, yyyy hh:mm.
Otherwise regional and language options, and program settings, can override how the date is shown (which can be important if you are sharing workbooks, especially with unknown future users).
Is the input UTC or do you need to convert?
If you need to convert, do you have a fixed offset in hours? If so, it is a simple formula. For example: =A1+3/24 for UTC-3 hours.
To change what is stored, first understand whether the number stored represents the number of days since 1 Jan 1901, or 1 Jan 1904, or some other convention (such as 1 Jan 1970).
Then decide if you want to store it as a date or a text string.
Then decide if you want to store it as 3 copies of the same value (each displaying a different aspect: day, date, time) or if you just want each value to be its own part not the whole date "hidden" and the display set.
To store it as a text string, use =TEXT(A1,"Dddd"), =TEXT(A1,"MM:DD:YYYY") and =TEXT(A1,"HH:MM").
Watch out for 24 or 12 hour time: the difference is whether "AM/PM" is appended. Your input is likely 24h time but check another example from the dataset to be sure.

Excel multiple if function

I am facing the following issue, at the moment.
I would like to know if a value matches with a field. This field contains the following information:
9/4/2015 12:00:00 PM
Month/Day/Year hh:mm:ss
Now I want to compare my values with the field mentioned above.
My values are: Day and Month.
My idea is to create one term and just change the values in the term
every month (for the report).
e.g.
IF Month = 10 and Day = 27 write Yes in a field. If not write No.
The problem is that a day or a month can have either two or one number:
9/4/2015 12:00:00 PM
10/25/2015 12:00:00 PM
1/12/2015 12:00:00 PM
12/1/2015 12:00:00 PM
Any ideas?
Thanks in advance.
The following forumula would do it without using VBA, comparing the value in A1 to a specific day and month using IF and SUMPRODUCT:
=IF(SUMPRODUCT(--(MONTH(A1)=10);--(DAY(A1)=27));"Yes";"No")

Excel adding dates to specific date format

I have dates coming out of a database into a column that have this format:
Column K
AUG-14-2015 08:31:32 AM
AUG-12-2015 06:10:03 PM
AUG-12-2015 05:17:51 PM
I want to add like '2.2' days to each of these and put them in Column L. I have formatted the column in this format:
mmm-dd-yyyy hh:mm:ss AM/PM
I wasn't sure if the dashes are causing the problem, but when I do a =K15+2.2 I get a !VALUE. Any ideas what I need to do? Thanks.
After some experimenting, it seems that while you can specify a date format "mmm-dd-yyyy hh:mm:ss AM/PM", the actual entry into the cells must be either a date in the system wide locale specific format, or a number of days since 1 January 1900.
So for example when you set a cell's format to custom:
"mmm-dd-yyyy hh:mm:ss AM/PM"
In my case (Windows 10 default UK locale settings, Excel 2010) for AUG-12-2015 06:10:03 PM, I can enter any of:
12/08/2015 06:10:03 PM
12/08/2015 18:10:03
42228.26
And also exchange the month 08 for Aug or AUG in any case and change the '/' for '-' in the dates.
For cells formatted "mmm-dd-yyyy hh:mm:ss AM/PM", the output for any of the above inputs is:
Aug-12-2015 06:10:03 PM
Note that there does not appear to be a means to force all-capitals for the month.
Note also that if you enter a date/time in the locale format it is automatically recognised and formatted as date/time.
So really your only option is to either change the format of the source data, pre-process the data into locale date/time format, or write a macro to do it within the spreadsheet. It may also work perhaps if you change your locale settings (System Settings, Language & Time), but that is perhaps less than satisfactory because it will affect date presentation for the whole system.
If you want to avoid VBA, then you can add a column("L") next to your data and enter:
=SUBSTITUTE(K1,"-","/")
Another solution would be to write code to do just that to your existing "K" Column

Resources