Excel TODAY() function in IF formula doesn't work properly - excel

I have "Microsoft MonthView Control 6.0 (SP4)" component that enters the date to cell "D17" I want my function to compare today date to cells "D17" date and give certain message. So if date in cell "D17" is older than current date it will display "OFFER EXPIRED" message. In cell "D17" I currently have 1.10.2018. I use formula =IF(D17>TODAY();"OFFER EXPIRED";"") but it doesn't work. I have tried different cell Formatting options with no success. Any ideas where the problem can hide?

Please try:
=IF(1*SUBSTITUTE(D17;".";"/")>TODAY();"OFFER EXPIRED";"")
(Seeks to coerce Text 1.10.2018 into Number before making the comparison.)

Assuming that the date you have is in string format & in dd.mm.yyyy format. Use below code for the comparison:
=IF(DATE(
RIGHT(D17,4),
MID(D17,FIND(".",D17,1)+1, (
FIND(".",D17,FIND(".",D17,1)+1)-
FIND(".",D17,1))-1),
LEFT(D17,FIND(".",D17,1))
)<TODAY(),
"OFFER EXPIRED","")

Related

How to put todays date and time in excell cell

Within an Excel cell, I want to have the current (dynamic) date time printed.
I tried with following format:
TEXT(TODAY(); "ddmm");TEXT(TIME(HOUR(NOW());MINUTE(NOW());SECOND(NOW()));"mmss")
The format cell is not formatted as text. However, when I select the cell I have exactly that what is typed iso 07111533
I tried already with TEXT(TODAY(); "ddmm") and then my cell is filled with 0711, which is ok.
Expected result should be something like 07113815
Actual result:
TEXT(TODAY(); "ddmm");TEXT(TIME(HOUR(NOW());MINUTE(NOW());SECOND(NOW()));"mmss")
You're over-complicating:
=TEXT(NOW(),"ddmm") & TEXT(NOW(),"mmss")

Excel: Format TODAY() / DATE

1) I would expect in E14 "Today is 13.09.2016", because E16 is formatted as DATE (customer)! But there is a general number instead of date. Why is Excel not able to copy the content of E16 !! How can I get the date in this position?
PS: If you suggest me ="today is "&today(), then please explain me, how I can format the date in YYYYMMDD as in the screenshot
You need to use another function to apply formatting, try the following:
="today is " & TEXT(TODAY(), "yyyymmdd")
More info:
Excel Date Formatting
Put =TODAY() in A1.
Tap Ctrl+1 and format A1 as Number, Custom, Type: To\d\a\y i\s yyyymmdd
You will display This is 20160913 but retain the underlying raw date that can be used in calculations.
Try the code
="today is "&TEXT(E16,"yyyy-mm-dd")
http://www.mrexcel.com/forum/excel-questions/513984-linked-text-today-problem.html

Set format of date, concatenated with string

I would like to get the following string as a date formatted:
="Status: "& TODAY()
However, I get:
Status: 42418
I would like to get:
Status: 18.02.2016
I already tried to change the format to Date or use the Datevalue function.
Any suggestions, how to get the current date correctly formatted?
You can format the date manualy with DAY(),MONTH() and YEAR() function.
="Status: "& DAY(TODAY())&"."& MONTH(TODAY())&"."&YEAR(TODAY())
Or you can use the TEXT() function to do the formatting.
="Status: " & TEXT(TODAY();"DD.MM.YYYY")
A better way to do this is just change the number format.
Change your cell formula back to =today()
Select the Format menu, then Number, More Formats, and finallay More date and time formats
Then set the custom format as followed:
The benefit of this is that the value of your cell is still a date, not string
EDIT
This answer primarily illustrate separation of presentation and data.
Think of currency. 2 is data, and US$ 2.00 is presentation of the data. When you compute the value, you just want to put the number 2 instead of a formula like = "US$" & data & ".00"
This makes the spreadsheet more robust to any future change where you want to reference your computed values in other cells.
Another example would be win-loss computation. It's better to output the value TRUE/FALSE or 1,0,-1 and then have a custom format to convert the value to text. (In this case, the format rule is "WIN";"LOSS";"DRAW")

Dates Formatting in Excel

I have a column with many thousands of rows. The column is meant to be date and is of the format dd/mm/yyyy
But, when I try to do formulas based on the dates, something is clearly amiss.
For example, if you try to apply autofilter on the dates, some of them are grouped as a year with the expandable boxes while others appear as their own items.
For each record I tried a formula to parse it apart.=DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2))
That did not help.
I also selected the column and switched it from general to date format
I really don't know how to ask the question any clearer. I can tell you that with a date of the format 1/11/2013 when I run =year(right(A1,4)) I get 1903 instead of 2013. When I run =date(right(A1,4),mid(A1,3,2),left(A1,2)) the formula returns 2/10/3192
It's very simple why your formulas doesn't work corectly. When yor're using somehting like this: RIGHT(A2,4), your value from A2 translates to 41579 for 1/11/2013 (Excel stores all dates as integers and all times as decimal fractions. You can read more here). Next formula should work well:
=DATE(RIGHT(TEXT(A2,"dd/mm/yyyy"),4),MID(TEXT(A2,"dd/mm/yyyy"),4,2),LEFT(TEXT(A2,"dd/mm/yyyy"),2))
Btw, if you'd like to get correct format for dates, you can add formula in some empty column (but before set date format for this column):
=A2*1
and drag it down. Then copy values from this temp column and paste them using "Paste special->Values" in colunm A (where should be date format as well)
Or you can use this simple macro:
Sub test()
With Range("A2:A100")
.NumberFormat = "dd/mm/yyyy"
.Value = .Value
End With
End Sub

Excel 2010 - change US dates to UK format

I have imported a CSV file with 2 long columns of dates. These dates are in the US format Aug/28/2013 and I want them to be in the standard UK dd/mm/yyyy format.
I have tried formatting the cells as US dates and then converting them to number-only formats, and various other permutations within the Date format box, but with no success.
Can anyone rid me of these awful US dates please?
Another solution without using a formula:
Select the relevant columns
Choose Data → Text to Columns…
Select “Delimited” and click Next
Untick all delimiters and click Next
Select data column format “Date: MDY” and click Finish
The dates should now be converted to UK dates.
The problem is that a US date can parsed by Excel as a UK date when the day is less than 13. When this happens Excel converts it to the localized UK serial (date) number.
So 03/19/2014 is obviously a US date of the 19th of March. However 05/03/2014 is ambiguous so Excel parses it the local date format as the 5th of March, rather than the US 3rd of May. Any formula has to check if Excel has stored the US Date as a UK date. A UK date will be stored in Excel as a number.
=IF(ISNUMBER(A2),DATE(TEXT(A2,"yyyy"),TEXT(A2,"dd"),TEXT(A2,"mm")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))
(For a US date in cell A2 and PC date is dd/mm/yy).
If ISNUMBER is true, the US date looks like a UK date and Excel has serialized it as a number. So can format the date as text and back to a date again. Note day is passed to the month parameter of the first DATE function to perform the conversion.
If ISNUMBER is false, its stored as a string as Excel doesn't convert a date string with >12 months. So use string functions to split it up for the DATE function.
I'm assuming that the date you received is formatted as text and that simply formatting it as date is not changing anything. You can run the following formula on the date:
=(MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1)&"-"&LEFT(A1,FIND("/",A1)-1)&"-"&RIGHT(A1,4))*1
If you get numbers, you just need to format it as dd/mm/yyyy and it should be good.
I tried some of the other suggestions but none seemed to work for me. In my case I was importing US dates in the form M/d/yyyy hh:mm:ss. If you don't mind using some VBA in your spreadsheet then the following function did the job for me:
Public Function USDate(ds As Variant) As Variant
Dim sp() As String
Dim spt() As String
Dim spt2() As String
If ds = vbNullString Then
USDate = ""
ElseIf IsNumeric(ds) Then
' Convert numeric US dates wrongly interpreted as UK i.e. 1/7/2017 as 7th January 2017
USDate = DateSerial(Year(ds), Day(ds), Month(ds))
Else
sp = Split(ds, "/") ' split the date portion
spt = Split(sp(2), " ") ' split the time from the year
spt2 = Split(spt(1), ":") 'split the time hms
USDate = DateSerial(spt(0), sp(0), sp(1)) + TimeSerial(spt2(0), spt2(1), spt2(2))
End If
End Function
Thanks for https://stackoverflow.com/users/845584/peterx pointing out - you will need to create the function in a VBA code module to use this technique.
Simply use it in a spreadsheet formulae for example =USDate(A2)
Related to this, the below simply formula can be helpful for changing a date from
"MM/DD/YYYY"
into
"DD/MM/YYYY".
=VALUE(TEXT(B2,"mm/dd/yyyy"))
We can get best of both world with this more concise formula:
=IF(ISNUMBER(A2),VALUE(TEXT(A2,"mm/dd/yyyy")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))
Can't find anything shorter.
There was one more issue for me, as somehow the raw data was supposed to be read as a number, but it did not. Hence, i updated the formula with 1 final case:
=IFERROR(IF(ISNUMBER(A2),VALUE(TEXT(A2,"mm/dd/yyyy")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2))),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,1)))
This can be tricky when the dates in mixed format eg. UK and US in the same column. I have found an effective if inelegant solution:
Step1) Select the column containing the dates to be converted;
Step2) Format, Cells, Text;
Step3) Format, Cells, Date, US;
Step4) Data, Text to column, Next, Delimited, Next, delete all delimiters, Next, select format MDY;
Step5) Format, Cells, Date, UK.
Step4 had been suggested elsewhere, but that on it's own didn't do it for me. I am hoping to combine these steps into a macro but no success this far.
I couldn't get the most common answer to work, the process that worked for me was:
For date 10/04/2018 11:49:20, right-click cell and "Format Cells", "Number" tab and select "Custom" Category and then select mm/dd/yyyy hh:mm.
Assuming that you start with a string (and not an internal excel date number that is just formatted as US format - which is an easy fix), can someone tell me why this method doesn't work?
Use the DATEVALUE / TIMEVALUE functions to convert it into an excel internal formatted date number (You might need to MID() the string in case there are extra bits before or after).
Just make sure that your regional settings match the input date format (otherwise DATEVALUE will fail and you will get a #VALUE error).
Then set the cell format to display the way you want it (Custom format e.g. "dd/mm/yyyy hh:mm:ss").
If you also want to change the timezone, you can add on (hours/24) to the internal Excel excel formatted date number.
The above look impressively complex! Why any country should settle on a non-sequential date format escapes me! Say you have a US-format date (mm/dd/yy) in cell A1. To convert this to dd/mm/yy format as in the UK, just do:
=CONCATENATE(MID(A1,4,2),"/",MID(A1,1,2),"/",MID(A1,7,2))
This certainly works in LibreOffice and I hope also in Excel.

Resources