Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Regarding WEEKDAY(), I read that problems can occur if dates are entered as text.
Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#2
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
But the difference is that when you key 21/4/2008 into cell A1, Excel
recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#3
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Hi Bob,
Can you also explain another one along similar lines. If I put todays date 09/09/2006 in A1. Then in A2 I put =MONTH(A1) and I get 9 which is good. I then format A2 as mmmm and I get January. What gives?? Confused Martin |
#4
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Again it is because the underlying values of dates are just numbers. As I
said to Epinn, the value stored in a date of 21/4/2008 is 39559. Now when you do a =MONTH(A1) in A2, you are not really returning a date, but a simple month number (9 in the case quoted). But, because it is a number, if you do date type things on it, Excel will not complain, it will just work on whatever date that number resolves to. As a date is stored as the number of days since 1st January 1900, the value of 9 will be treated as 9th Jan 1900, so if you format it as mmmm, you get January. Format it as dd/mm/yyyy, and see what I mean. -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "MartinW" wrote in message ... Hi Bob, Can you also explain another one along similar lines. If I put todays date 09/09/2006 in A1. Then in A2 I put =MONTH(A1) and I get 9 which is good. I then format A2 as mmmm and I get January. What gives?? Confused Martin |
#5
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Thanks Bob, of course it is I should have seen that...duh!
So to get a return of September I can see a way of doing it by hiding the month cell and a Vlookup table somewhere out of the way and using a Vlookup in A2. Is there a simpler method? Thanks again Martin |
#6
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
In A2 enter:
=A1 *Then* format A2 to mmmm! -- HTH, RD --------------------------------------------------------------------------- Please keep all correspondence within the NewsGroup, so all may benefit ! --------------------------------------------------------------------------- "MartinW" wrote in message ... Thanks Bob, of course it is I should have seen that...duh! So to get a return of September I can see a way of doing it by hiding the month cell and a Vlookup table somewhere out of the way and using a Vlookup in A2. Is there a simpler method? Thanks again Martin |
#7
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Bob,
Glad I still caught you this late. Thank you for enlightening me. <<21/4/2008 is not a number here, so it errors. If it gives me an error, then I know. The problem is it returns "7" instead of "5" in my other example. That's very misleading and dangerous. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. So, I understand why you prefer =WEEKDAY(--"2008-04-21"). But I prefer "/" to "-" and I tested it. I am glad that "/" works too. My preference will be =WEEKDAY(--"2008/4/21"). I assume "--" above is the same as "--" in SUMPRODUCT(). Please confirm. Can't find double negating in Help. I find date functions may be as confusing as SUMPRODUCT(). Will see. Epinn "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#8
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Because weekday(21/4/2008) does give an error
as it treats 21/4/2008 as 21/4 divided by 2008 - nearly 0 ie 0/1/1900 in date terms Odd but thats what's happening Steve On Sat, 09 Sep 2006 01:52:22 +0100, Epinn wrote: Bob, Glad I still caught you this late. Thank you for enlightening me. <<21/4/2008 is not a number here, so it errors. If it gives me an error, then I know. The problem is it returns "7" instead of "5" in my other example. That's very misleading and dangerous. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. So, I understand why you prefer =WEEKDAY(--"2008-04-21"). But I prefer "/" to "-" and I tested it. I am glad that "/" works too.. My preference will be =WEEKDAY(--"2008/4/21"). I assume "--" above is the same as "--" in SUMPRODUCT(). Please confirm. Can't find double negating in Help. I find date functions may be as confusing as SUMPRODUCT(). Will see. Epinn "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- Steve (3) |
#9
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
the N and the T on my keyboard are sicky sorry sTicky
So I meant to write "weekday(21/4/2008) doesN'T give an error" Steve On Sat, 09 Sep 2006 02:15:26 +0100, SteveW wrote: Because weekday(21/4/2008) does give an error as it treats 21/4/2008 as 21/4 divided by 2008 - nearly 0 ie 0/1/1900 in date terms Odd but thats what's happening Steve On Sat, 09 Sep 2006 01:52:22 +0100, Epinn wrote: Bob, Glad I still caught you this late. Thank you for enlightening me. <<21/4/2008 is not a number here, so it errors. If it gives me an error, then I know. The problem is it returns "7" instead of "5" in my other example. That's very misleading and dangerous. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. So, I understand why you prefer =WEEKDAY(--"2008-04-21"). But I prefer "/" to "-" and I tested it. I am glad that "/" works too. My preference will be =WEEKDAY(--"2008/4/21"). I assume "--" above is the same as "--" in SUMPRODUCT(). Please confirm. Can't find double negating in Help. I find date functions may be as confusing as SUMPRODUCT(). Will see. Epinn "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- Steve (3) |
#10
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Probably the reason 21/4/2008 doesn't work for you is because your regional
settings aren't set-up as d/m/y, BUT as m/d/y. It *would* work on Bob's machine because he probably has the European short date set-up in his regional settings. And of course, 2008/04/21 should work *everywhere*, since it's recognized as international. -- Regards, RD --------------------------------------------------------------------------- Please keep all correspondence within the NewsGroup, so all may benefit ! --------------------------------------------------------------------------- "Epinn" wrote in message ... Bob, Glad I still caught you this late. Thank you for enlightening me. <<21/4/2008 is not a number here, so it errors. If it gives me an error, then I know. The problem is it returns "7" instead of "5" in my other example. That's very misleading and dangerous. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. So, I understand why you prefer =WEEKDAY(--"2008-04-21"). But I prefer "/" to "-" and I tested it. I am glad that "/" works too. My preference will be =WEEKDAY(--"2008/4/21"). I assume "--" above is the same as "--" in SUMPRODUCT(). Please confirm. Can't find double negating in Help. I find date functions may be as confusing as SUMPRODUCT(). Will see. Epinn "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#11
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Hi Epinn,
The "--" is exactly the same as its usage in SUMPRODUCT, it is coercing into a numeric. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. As RD says the second version of that works for you, but fails for me is because we have different date settings, yours are American, mine are European. But I prefer "/" to "-" and I tested it. I am glad that "/" works too. The purpose of using the date in the format yyyy-mm-dd or yyyy/mm/dd is to remove ambiguity (10/09/2006 is 9th Oct to you, it's 10th Sep to me). I prefer the use of the "-" separator because that is part of the ISO standard. I find date functions may be as confusing as SUMPRODUCT(). No, you are just trying to understand properly so that you can use more effectively. Nothing wrong with that. I answered a post on another forum where a guy gave totally misleading information about SUMPRODUCT as if it were gospel. It didn't affect the solution, which worked, but should the OP have tried to take it further, he would really have gotten confused. I don't see that happening to you. And if you think dates are confusing, just pity us developers who work in both markets, catering for all forms can be really challenging. -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) |
#12
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Thank you all. This has been very educational. I have a few comments.
Probably the reason 21/4/2008 doesn't work for you is because your regional settings aren't set-up as d/m/y, BUT as m/d/y. Good point, RD. I'm cocatenating the result and that returns a value of 38969 instead of September. If I key 9/9/2006 into A1, what formula do I use in A2 to get 38969. Please advise. =C1&" "&TEXT(A2,"mmmm") If I key 9/9/2006 into A1, I think I can reference A1 directly in the above formula, instead of entering =A1 in A2 and then using A2 in the above formula. The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843........Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. Don't think I want to agree with this. I key in =WEEKDAY(0) into a cell, I get 7-Jan-00. Don't know why and not sure if we are talking about the same thing. =MONTH(0) yields 1-Jan-1900. In both cases, we never got back to 1899. =WEEKDAY(--"1899/12/31") gives an error #VALUE! which makes sense as the date system starts at 1/1/1900. Talking about 1899 makes me feel very old ;) but all this is very interesting. Please keep the date talk going. Next I have to analyze the formula for "last workday of the current month." This formual is three-line long and uses EOMONTH(). Looks tough. If it gets too confusing, I'll just use it without understanding it. There is a shorter formula but uses "holidays" as part of the syntax. (Holidays is not a function.) Epinn "Bob Phillips" wrote in message ... Hi Epinn, The "--" is exactly the same as its usage in SUMPRODUCT, it is coercing into a numeric. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. As RD says the second version of that works for you, but fails for me is because we have different date settings, yours are American, mine are European. But I prefer "/" to "-" and I tested it. I am glad that "/" works too. The purpose of using the date in the format yyyy-mm-dd or yyyy/mm/dd is to remove ambiguity (10/09/2006 is 9th Oct to you, it's 10th Sep to me). I prefer the use of the "-" separator because that is part of the ISO standard. I find date functions may be as confusing as SUMPRODUCT(). No, you are just trying to understand properly so that you can use more effectively. Nothing wrong with that. I answered a post on another forum where a guy gave totally misleading information about SUMPRODUCT as if it were gospel. It didn't affect the solution, which worked, but should the OP have tried to take it further, he would really have gotten confused. I don't see that happening to you. And if you think dates are confusing, just pity us developers who work in both markets, catering for all forms can be really challenging. -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) |
#13
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
=weekday(d/m/y) or (m/d/y or whatever)
it treats it like a number on mine exactly the same results as if I type =d/m/y ... in a cell and have =weekday(cell) They all act as (a/b)/c for me Now if they were in ""'s that might be different Steve On Sat, 09 Sep 2006 11:43:01 +0100, Epinn wrote: Thank you all. This has been very educational. I have a few comments.. Probably the reason 21/4/2008 doesn't work for you is because your regional settings aren't set-up as d/m/y, BUT as m/d/y. Good point, RD. I'm cocatenating the result and that returns a value of 38969 instead of September. If I key 9/9/2006 into A1, what formula do I use in A2 to get 38969. Please advise. =C1&" "&TEXT(A2,"mmmm") If I key 9/9/2006 into A1, I think I can reference A1 directly in the above formula, instead of entering =A1 in A2 and then using A2 in the above formula. The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843........Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. Don't think I want to agree with this. I key in =WEEKDAY(0) into a cell, I get 7-Jan-00. Don't know why and not sure if we are talking about the same thing. =MONTH(0) yields 1-Jan-1900. In both cases, we never got back to 1899. =WEEKDAY(--"1899/12/31") gives an error #VALUE! which makes sense as the date system starts at 1/1/1900. Talking about 1899 makes me feel very old ;) but all this is very interesting. Please keep the date talk going. Next I have to analyze the formula for "last workday of the current month." This formual is three-line long and uses EOMONTH(). Looks tough. If it gets too confusing, I'll just use it without understanding it. There is a shorter formula but uses "holidays" as part of the syntax. (Holidays is not a function.) Epinn "Bob Phillips" wrote in message ... Hi Epinn, The "--" is exactly the same as its usage in SUMPRODUCT, it is coercing into a numeric. =WEEKDAY(--"21/4/2008") gives #VALUE! =WEEKDAYS(--"4/21/2008") gives 2. As RD says the second version of that works for you, but fails for me is because we have different date settings, yours are American, mine are European. But I prefer "/" to "-" and I tested it. I am glad that "/" works too. The purpose of using the date in the format yyyy-mm-dd or yyyy/mm/dd is to remove ambiguity (10/09/2006 is 9th Oct to you, it's 10th Sep to me). I prefer the use of the "-" separator because that is part of the ISO standard. I find date functions may be as confusing as SUMPRODUCT(). No, you are just trying to understand properly so that you can use more effectively. Nothing wrong with that. I answered a post on another forum where a guy gave totally misleading information about SUMPRODUCT as if it were gospel. It didn't affect the solution, which worked, but should the OP have tried to take it further, he would really have gotten confused. I don't see that happening to you. And if you think dates are confusing, just pity us developers who work in both markets, catering for all forms can be really challenging. |
#14
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]() "Epinn" wrote in message ... Thank you all. This has been very educational. I have a few comments. If I key 9/9/2006 into A1, what formula do I use in A2 to get 38969. Please advise. =A1 and format as General. As we said the underlying value of a date is just the number of days since 1st Jan 1900, so it is already that number. You just format it to see it. If I key 9/9/2006 into A1, I think I can reference A1 directly in the above formula, instead of entering =A1 in A2 and then using A2 in the above formula. Correct The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843........Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. Don't think I want to agree with this. I key in =WEEKDAY(0) into a cell, I get 7-Jan-00. Don't know why and not sure if we are talking about the same thing. You may not want to, but Biff is right. 1st Jan 1900 was a Sunday, the 31st Dec 1899 was a saturday, which is day 7 to WEEKDAY. You get 7-Jan-00 because it is formatted that way, the underlying value is 7. =MONTH(0) yields 1-Jan-1900. In both cases, we never got back to 1899. No, it yields 1. You just have it formatted as a date. A month number is not a date, it is the ordinal value of the month within the year. =WEEKDAY(--"1899/12/31") gives an error #VALUE! which makes sense as the date system starts at 1/1/1900. It does, as Excel "knows" that is not a date in its view of the world, but you can fool it =WEEKDAY(--"1900/01/01"-1) returns 7. Again as Biff, this is another nuance of Excel. Talking about 1899 makes me feel very old ;) but all this is very interesting. Please keep the date talk going. It would be nice if Norman Harker joined the discussion. He has made the study of dates a speciality. Next I have to analyze the formula for "last workday of the current month." This formual is three-line long and uses EOMONTH(). Looks tough. If it gets too confusing, I'll just use it without understanding it. There is a shorter formula but uses "holidays" as part of the syntax. (Holidays is not a function.) How about =WORKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),-1) or without the ATP function =DATE(YEAR(A1),MONTH(A1)+1,0)-(MAX(0,WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2) -5)) Epinn "Bob Phillips" wrote in message ... |
#15
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
When you enter it into a function, the function treats it as its argument,
and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. Actually, the formula does not "error" but calculates properly. The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843 Since WEEKDAY only works with integers Excel truncates the value to 0. Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. This is another Excel nuance. The date serial system doesn't start until day 1 which is 1/1/1900 yet you can calculate a date to be 1/0/1900. Excel treats the 0th day of the month as the last day of the previous month. That's how we end up with 7 as the result of the Weekday function. Biff "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#16
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
Biff,
Thank you for taking the time to explain things to me, another "perfectionist." Unfortunately, I am learning how to run before I can walk steadily. Bob is right and I am having an episode of "information overload" at this time. I am sure that I can appreciate your analysis even better in the future and I look forward to more. By the way, "anal" is good, and I don't feel like I am the only one being detailed. All good programmers have a sense of perfection. Cheers, Epinn "Biff" wrote in message ... When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. Actually, the formula does not "error" but calculates properly. The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843 Since WEEKDAY only works with integers Excel truncates the value to 0. Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. This is another Excel nuance. The date serial system doesn't start until day 1 which is 1/1/1900 yet you can calculate a date to be 1/0/1900. Excel treats the 0th day of the month as the last day of the previous month. That's how we end up with 7 as the result of the Weekday function. Biff "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
#17
![]()
Posted to microsoft.public.excel.newusers
|
|||
|
|||
![]()
I better clarify for those who haven't read the other thread. "Anal" is a compliment by _ _ _ and I just carried it over. Hope using the word here hasn't offended anyone. ;)
Epinn "Epinn" wrote in message ... Biff, Thank you for taking the time to explain things to me, another "perfectionist." Unfortunately, I am learning how to run before I can walk steadily. Bob is right and I am having an episode of "information overload" at this time. I am sure that I can appreciate your analysis even better in the future and I look forward to more. By the way, "anal" is good, and I don't feel like I am the only one being detailed. All good programmers have a sense of perfection. Cheers, Epinn "Biff" wrote in message ... When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. Actually, the formula does not "error" but calculates properly. The argument: 2/14/2008 is the equivalent of: 2 divided by 14 divided by 2008 which equals: 0.0000711439954467843 Since WEEKDAY only works with integers Excel truncates the value to 0. Weekday( 0 ) is actually 12/31/1899 which is a Saturday or weekday 7 when the return_type used is 1 or omitted. This is another Excel nuance. The date serial system doesn't start until day 1 which is 1/1/1900 yet you can calculate a date to be 1/0/1900. Excel treats the 0th day of the month as the last day of the previous month. That's how we end up with 7 as the result of the Weekday function. Biff "Bob Phillips" wrote in message ... But the difference is that when you key 21/4/2008 into cell A1, Excel recognises it as a date and converts it to an underlying value of 39559, which it presents/formats as that date. When you enter it into a function, the function treats it as its argument, and says that it is invalid as it expects a number (the true underlying value). 21/4/2008 is not a number here, so it errors. If you want to enter the date into the WEEKDAY function, you have to force it into a number, either using another function such as you did with DATE, or coerce it directly, like =WEEKDAY(--"21/4/2008") or my preferred format of =WEEKDAY(--"2008-04-21") -- HTH Bob Phillips (replace somewhere in email address with gmail if mailing direct) "Epinn" wrote in message ... Regarding WEEKDAY(), I read that problems can occur if dates are entered as text. Based on this, it is understandable that =WEEKDAY(2/14/2008) returns a wrong result (7). This is because general format is same as text. If I enter =WEEKDAY(DATE(2008,2,14)), I get the correct result (5). Okay, so far. What I don't understand is the following. I click A1 and key in 2/14/2008, then in A2, I key in =WEEKDAY(A1). I also get the correct result (5). The way I enter 2/14/2008 to A1 is exactly the same as I enter 2/14/2008 *directly* to the formula. It amazes me that referencing A1 in WEEKDAY() gives me the correct answer whereas keying it in as part of the formula won't work. Comments welcome. Epinn |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Function to write Weekday - Monday, Tuesday etc | Excel Discussion (Misc queries) | |||
Forecasting weekday occupancy between two years | Excel Worksheet Functions | |||
Conditional formatting using weekday | Excel Discussion (Misc queries) | |||
weekday display in excel | Excel Worksheet Functions | |||
Weekday Function | Excel Worksheet Functions |