एक्सेल कार्यदिवस 1900 के लिए गलत क्यों हैं?


27

इस सवाल की टिप्पणियों पर आधारित है AdamV में अपने जवाब पर मैं कैसे Excel में एक सेल में दिन नाम मिलता है?

जब A1 का मान 2009-08-01 है, तब:

  • =WEEKDAY(A1) प्राप्त करेंगे 7
  • =TEXT(7, "dddd") प्राप्त करेंगे Saturday
  • =TEXT(7,"dddd, yyyy-mm-dd") प्राप्त करेंगे Saturday, 1900-01-07
  • =TEXT(1,"dddd, yyyy-mm-dd") प्राप्त करेंगे Sunday, 1900-01-01
  • =TEXT("1900-01-01","dddd, yyyy-mm-dd") भी प्राप्त करेंगे Sunday, 1900-01-01

अंतिम दो गलत हैं: 1 9 00 का जनवरी वास्तव में सोमवार है।
विभिन्न स्रोत इस बात की पुष्टि करते हैं:

मुझे किसकी याद आ रही है? एक्सेल यह गलत क्यों कर रहा है?


1
इस सवाल के लिए धन्यवाद मैंने अपना पिछला जवाब थोड़ा स्पष्ट कर दिया है कि यह स्पष्ट नहीं है कि 1/1/1900 रविवार नहीं है, लेकिन एक्सेल को लगता है कि यह है। अशुद्धि उस पिछले उत्तर के पदार्थ को नहीं बदलती है, जो यह है कि एक तारीख के रूप में देखने के लिए तैयार किए गए पाठ का उत्पादन करने के लिए एक आधार के रूप में कार्यदिवस की संख्या का उपयोग करना त्रुटिपूर्ण और अनावश्यक है।
एडम 10

जवाबों:


40

जैसा कि Microsoft KB 214058 में वर्णित है :

1 मार्च, 1900 से पहले के सप्ताह एक्सेल में गलत हैं

अधिक जानकारी

जब Microsoft Excel में दिनांक प्रणाली मूल रूप से बनाई गई थी, तो इसे अन्य स्प्रेडशीट कार्यक्रमों द्वारा उपयोग की जाने वाली तिथि प्रणालियों के साथ पूरी तरह से संगत करने के लिए डिज़ाइन किया गया था।

हालांकि, इस तिथि प्रणाली में, वर्ष 1900 को एक लीप वर्ष के रूप में गलत तरीके से व्याख्या किया गया है। क्योंकि वर्ष 1900 में 29 फरवरी ("लीप डे") नहीं है, 1 मार्च 1900 से पहले की किसी भी तारीख के लिए सप्ताह का दिन ("लीप डे"), सही तरीके से गणना नहीं की जाती है।

"अन्य स्प्रेडशीट कार्यक्रम" लोटस 1-2-3 का संदर्भ देते हैं , जो उस समय काफी लोकप्रिय था, और गलत तरीके से माना गया कि वर्ष 1900 एक लीप वर्ष था। यह KB 214326 में और भी अधिक विस्तार से बताया गया है :

एक्सेल 2000 गलत तरीके से मानता है कि वर्ष 1900 एक लीप वर्ष है

अधिक जानकारी

जब लोटस 1-2-3 पहली बार जारी किया गया था, तो कार्यक्रम ने यह मान लिया था कि वर्ष 1900 एक लीप वर्ष था, हालांकि यह वास्तव में एक लीप वर्ष नहीं था। इससे लीप वर्ष को संभालने के लिए कार्यक्रम आसान हो गया और लोटस 1-2-3 में लगभग सभी तिथि गणनाओं को कोई नुकसान नहीं हुआ।

जब Microsoft Multiplan और Microsoft Excel रिलीज़ हुए, तो उन्होंने यह भी मान लिया कि 1900 एक लीप ईयर था। इस धारणा ने माइक्रोसॉफ्ट मल्टीप्लेन और माइक्रोसॉफ्ट एक्सेल को लोटस 1-2-3 द्वारा इस्तेमाल की जाने वाली समान धारावाहिक प्रणाली का उपयोग करने की अनुमति दी और लोटे 1-2-3 के साथ अधिक संगतता प्रदान की। 1900 को एक लीप वर्ष के रूप में मानने से उपयोगकर्ताओं के लिए एक प्रोग्राम से दूसरे प्रोग्राम में वर्कशीट ले जाना आसान हो गया।

यद्यपि इस व्यवहार को ठीक करना तकनीकी रूप से संभव है ताकि Microsoft Excel के वर्तमान संस्करणों को यह न लगे कि 1900 एक लीप वर्ष है, ऐसा करने के नुकसान फायदे हैं।

यदि इस व्यवहार को ठीक किया जाना था, तो निम्नलिखित सहित कई समस्याएं उत्पन्न होंगी:

  • वर्तमान Microsoft Excel कार्यपत्रकों और अन्य दस्तावेज़ों में लगभग सभी तिथियां एक दिन कम हो जाएंगी। इस बदलाव को सही करने में काफी समय और मेहनत लगेगी, खासकर उन सूत्रों में जो तारीखों का उपयोग करते हैं।
  • WEEKDAY फ़ंक्शन जैसे कुछ फ़ंक्शन, विभिन्न मान लौटाएंगे; यह गलत तरीके से कार्य करने के लिए कार्यपत्रकों में सूत्र हो सकता है।
  • इस व्यवहार को ठीक करने से Microsoft Excel और दिनांक का उपयोग करने वाले अन्य कार्यक्रमों के बीच सीरियल दिनांक संगतता टूट जाएगी।

यदि व्यवहार ठीक नहीं रहता है, तो केवल एक समस्या होती है:

  • WEEKDAY फ़ंक्शन 1 मार्च, 1900 से पहले की तारीखों के लिए गलत मान देता है। क्योंकि अधिकांश उपयोगकर्ता 1 मार्च 1900 से पहले की तारीखों का उपयोग नहीं करते हैं, यह समस्या दुर्लभ है।


5
यह भी देखें । कई प्रोग्रामर गलत तरीके से मानते हैं कि दिनांक / समय के साथ काम करना आसान है :)
ब्लूराजा - डैनी पीफ्लुगुफ्ट

3
ऐतिहासिक नाइटपिक: जब आप कहते हैं कि 1-2-3 "काफी लोकप्रिय" था, तो इसका मतलब है कि यह एक बार प्रमुख स्प्रेडशीट था।
इसहाक राबिनोविच

12

यहाँ जोएल द्वारा खुद को समझाया गया कारण है: माई फर्स्ट बिलजी रिव्यू

बेसिक 31 दिसंबर, 1899 को 1 जनवरी 1900 के बजाय युग के रूप में उपयोग करता है, लेकिन किसी कारण से, आज की तारीख में एक्सेल में वही था जैसा कि बेसिक में था।

है ना?

मैं एक एक्सेल डेवलपर को खोजने गया था जो याद करने के लिए काफी पुराना था। एड फ्राई को इसका जवाब मालूम था।

"ओह," उसने मुझसे कहा। "28 फरवरी, 1900 को देखें।"

"यह 59 है," मैंने कहा।

"अब 1 मार्च का प्रयास करें।"

"यह 61 है!"

"क्या हुआ 60?" एड ने पूछा।

"29 फरवरी 1900 एक लीप वर्ष था! यह 4 से विभाज्य है!"

"अच्छा अनुमान है, लेकिन कोई सिगार नहीं है," एड ने कहा, और मुझे थोड़ी देर के लिए आश्चर्यचकित कर दिया।

उफ़। मैंने कुछ शोध किया। जब तक वे 100 से विभाज्य नहीं होते हैं, तब तक वे 400 से विभाज्य नहीं होते हैं।

1900 एक लीप वर्ष नहीं था।

"यह एक्सेल में एक बग है!" मैंने कहा।

"ठीक है, वास्तव में नहीं," एड ने कहा। "हमें इसे इस तरह से करना था क्योंकि हमें लोटस 123 वर्कशीट आयात करने में सक्षम होने की आवश्यकता है।"

"तो, यह लोटस 123 में एक बग है?"

"हाँ, लेकिन शायद एक जानबूझकर। लोटस को 640K में फिट होना था। यह बहुत अधिक स्मृति नहीं है। यदि आप 1900 को अनदेखा करते हैं, तो आप यह पता लगा सकते हैं कि क्या एक दिया गया वर्ष सिर्फ एक लीप वर्ष है अगर यह देखने के लिए कि दो सबसे सही बिट्स हैं। शून्य शून्य हैं। यह वास्तव में तेज़ और आसान है। कमल के लोगों को शायद लगा कि अतीत में उन दो महीनों के लिए गलत नहीं था।


1
@JeroenWiertPluimers: वास्तव में इस लिंक के साथ मेरा जवाब मॉडरेटर द्वारा हटा दिया गया था और मैंने अपने उत्तर का विस्तार करने का फैसला किया।
जियोर्गी

2

इसका एक समाधान वर्ष में 400 वर्ष जोड़ना है, कार्यदिवस को निम्न सूत्र में जोड़ना है = WEEKDAY (DATE (A4 + 400, B4, C4), 1) इसलिए यदि A4 = 1834 B4 = 12% = 14 यह 1 दिसंबर (रविवार) को वापस आ जाएगा जो 14 दिसंबर 2234 के लिए समान है। यह ग्रेगोरियन कैलेंडर में बदलाव के बाद 1753 से पहले की तारीखों के लिए काम करना बंद कर देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.