I would like assistance to carry out, in vba, the sorting of a range containing several columns. One of these columns contains a date prior to 1900. One of the sorting arguments should be the year of this date. The date is in the form dd/mm/yyyy.
Could a forum member help me WITHOUT creating a temporary column?
Thanks in advance
Gihem
Since Excel can only handle dates between 1900-01-01 and 9999-12-31 you must use a helper column. Actually your "dates" before 1900 are no real dates they are strings (text) and therefore are sorted alphabetically.
If you use the ISO 8601 format yyyy-mm-dd an alphabetical sort of strings would work. But therefore all dates need to be converted to strings.
So I have a pretty long column with name dates and hours, like this:
14/01/2017 03:30
(They are DD/MM/YYYY HH:MM)
I need to get the month number and show it as text, like January, February, and so on.
If I format the destination cell as 'MMM' all the column cells show January even if the given month is 2, 3, or let's say 12. I also tried the formula =TEXT(L2,"mmmm") (since the given info come from column F.
Any ideas?
sounds like your date and time are stored as text and not in excels serial date format. You can test this by changing the format of the cell to general and seeing if anything happens if nothing changes then its text. another way would be to use the formula =istext(A1) where A1 is a cell with a date in it.
Now ASSUMING you do have dates in text format, I would suggest converting them to excels date serial. There are numerous ways of doing this. I will show you one way.
This will strip each component of the text out and then recombine it. We will assume your date in is A1
Strip out the year
=MID(A1,7,4)
Strip out the month
=MID(A1,4,2)
Strip out the day
=LEFT(A1,2)
Now to recombine it:
=DATE(MID(A1,7,4),MID(A1,4,2),LEFT(A1,2))
That will give you the date in an integer format that excel can then turn around and display as needed.
In order not to lose the time component you should strip that part off as well and combine it with the date. Remember the date is an integer, and the time is everything after the decimal. Think of time as a fraction of a day.
To get time out use:
=RIGHT(A1,5)
and to convert it to excel time:
=TIMEVALUE(RIGHT(A1,5))
and to get the two together, simply add:
=DATE(MID(A1,7,4),MID(A1,4,2),LEFT(A1,2)+TIMEVALUE(RIGHT(A1,5))
The key part to this whole thing is you will need to format that cell to display what you want. you can either choose a preformatted style from the drop down menu, or you can apply custom formatting. Setting the custom format to MMMM should display just the full name of the month.
IF you actually need the text of the month and not just the format, then you could use the formula from your question:
=TEXT(<insert appropriate formula from above>,"mmmm")
Try using MID to get the month only, then TEXT():
=TEXT(MID(A1,SEARCH("/",A1)+1,2),"MMMM")
Is it possible to convert the standard excel format (MM/DD/YYYY) to just the month? I have column B that has a date format &column V where I have the month. I have check the internet/stack overflow, but have only found conversions for changing the format of the date.
you mean like the MONTH() formula?:
=MONTH(B1)
If the date is stored as an excel serial, to display just the month without losing the potential other information such as year, day, and time that might be stored with it, you are usually better off reformatting the display of the cell.
If you set the format of the cells to General and the numbers change you know you have your date in an Excel format. If they do not change you have them as a string.
Select custom format for the cell format and go to the area when your can type in display formats and set it either to
m or mm - for numbers to be displayed. The later will give you a proceeding 0 for single digit months.
mmm - for the first three letters of the month.
mmmm - for the full spelling of the month.
If you need to make comparisons of the month from a full date, use the formula macro man listed in a manner like:
=Month(B1)=Month(V1)
That will display true if the months for the dates in both A1 and V1 are the same.
I've got two columns, one of them is a timestamp field with the format as yyyy-mm-dd h:mm:ss and another is a Duration_in_hours column which has a number.
I need to add the duration to the h. Any suggestions on how I can go about doing so?
EDIT:
The cell format for timestamp is 'Custom' (If that matters).
If you simply need to add the hours and let the formatting do the rest (i.e. if there's enough hours in h to change the date dd, then change the date as well, and any other applicable fields), then you simply do it like this:
=A1+(A2/24)
Where:
A1 has the timestamp field.
A2 has the duration in hours.
This works because a unit of 1 in excel is equivalent to 1 day. Dividing by 24 gives it in terms of hours.
I want to subtract 2 dates in Excel but the problem is they have different date formats.
So... my first date is something like this 18.09.2011 (DD.MM.YYYY) and the second one is something like 9/15/2011 (MM/DD/YYYY). So how can I subtract these two dates? Because DAY(cell of date one) - DAY (cell of date 2) won't work.
Thanks!
If your dates are really entered as dates you can use them in any kind of calculation, as a date really is stored as a numeric value. Displaying one date in "MM/DD/YY" and the other one in "DD.MM.YYYY" doesn't make a difference. Try to format the cells as "General". Does the display change to a number (e.g. 40801 for today) you're fine. If your dates are entered as strings you may want to convert them into dates first - see this post