Excel จัดการองค์ประกอบของฟังก์ชั่นอย่างไร


21

ฉันพยายามใช้ฟังก์ชั่นเพื่อให้วันนี้เป็นตัวเลขใน Excel ตัวอย่างเช่นเมื่อฉันเขียนคำถามนี้ฉันควรได้รับ $ 18 $

ฉันพยายามใช้:

  1. ฟังก์ชั่นTODAY()ที่คืนวันที่วันนี้ในรูปแบบวันที่
  2. Day(<date>)<date>ที่ผลตอบแทนจำนวนวันของการ นั่นคือDAY(19/05/1984)ควรส่งคืน 19

ดังนั้นสูตร

=DAY(TODAY())

ควรให้ผลลัพธ์ที่ฉันต้องการ

อย่างไรก็ตามผลตอบแทนนี้ 18/01/1900 (เมื่อใช้ฟังก์ชั่นวันนี้)

ถ้าฉันใช้

=TODAY()

ในเซลล์ A1 แล้ว

=DAY(A1)

ในเซลล์อื่นฉันได้ผลลัพธ์ที่ถูกต้อง

ทำไมวัน (วันนี้ ()) ไม่ให้ผลลัพธ์ที่คาดหวัง

จากภูมิหลังของฉันเกี่ยวกับนักคณิตศาสตร์และโปรแกรมเมอร์มือสมัครเล่น (ใน Maple, Java, และ Python บางส่วน) องค์ประกอบของฟังก์ชั่นของฉันดูเหมือนจะดี

โดยทั่วไปแล้ว Excel จัดการองค์ประกอบของสูตรได้อย่างไร


11
คำตอบที่ถูกต้องคือ "ไม่ดี"
Carl Witthoft

การสนับสนุน Office สำหรับฟังก์ชั่น Excel .. มันยังบอกว่า: =DAY(TODAY())... ส่งคืนวันที่ปัจจุบันของเดือน (1 - 31) ..
txtechhelp

คำตอบ:


40

สูตรของคุณถูกต้อง เป็นวิธีที่ Excel จัดรูปแบบเซลล์ที่สับสน ตัวอย่างเช่นถ้าคุณด้วยตนเองตั้งค่ามือถือแล้วเปลี่ยนรูปแบบวันที่จะแสดงว่า18January 18, 1900

หากคุณเปลี่ยนรูปแบบของเซลล์ด้วยสูตรเป็น "ทั่วไป" ควรแสดงผลลัพธ์ที่คุณคาดหวัง


3
อาจช่วยอธิบายได้ว่าเหตุใดการจัดรูปแบบจึงเป็นเช่นนี้ Excel จัดเก็บการประทับเวลาเป็น "วันตั้งแต่ 00:00:00 วันที่ 0 มกราคม 1900" โดยมีชั่วโมงนาทีและวินาทีเป็นทศนิยมของวัน (เที่ยงวันที่ 1 มกราคม 1900 คือ "1.5")
Carl Kevinson

และ excel จะใช้รูปแบบวันที่หรือเวลาเป็นค่าเริ่มต้นทันทีที่มีการใช้ค่าวันที่ / เวลา TODAY()ที่สามารถเป็นได้ทั้งเซลล์อื่นที่มีรูปแบบเช่นเดียวกับที่หรือการทำงานเช่น น่ารำคาญจริง ๆ เมื่อคุณใช้พวกเขาเฉพาะในฟังก์ชั่นการสลายตัวและคุณต้องเปลี่ยนการจัดรูปแบบ
วงล้อประหลาด

1
มีความเกี่ยวข้องกัน: sciencemag.org/news/2016/08/… [เอกสารพันธุกรรมหนึ่งในห้ามีข้อผิดพลาดต้องขอบคุณ Microsoft Excel]
Darren Ringer

@DarrenRinger ฉันมักจะอ่านว่าเป็น "โทษเครื่องมือของพวกเขา" - จุดสำคัญของกระดาษที่ถูกและระมัดระวังที่เหลือ เกิดขึ้นคล้ายกันกับฉัน (แม้ว่าจะไม่เกี่ยวกับพันธุศาสตร์) และเช่นเดียวกับคนอื่น ๆ ฉันคิดว่า "Excel เปลี่ยนตัวเลขนั้นเป็น .... " ในขณะที่ฉันควรจะบอกตัวเองว่า "ไอ้บ้าฉันไม่ได้คำนึงว่ารูปนั้นจะเปลี่ยนไป ถึง ..... "
Darren Bartrup-Cook

9

ฉันคิดว่าคุณอาจสับสนในการคิดว่า Excel จัดการค่า 'วันที่': ไม่

วิธีใช้วันที่และเวลาใน Excel

ใน Excel ตัวเลขจะถูกใช้เพื่อแสดงวันที่ (จำนวนที่อาจเป็นเศษส่วนของวันตั้งแต่ 0 มกราคมถึง 1900) แต่จะถูกเก็บและจัดการโดย Excel เป็นตัวเลข TODAY () เป็นฟังก์ชันที่มีค่าเป็นตัวเลขและ DAY () เป็นฟังก์ชันจากอาร์กิวเมนต์ตัวเลขไปยังผลลัพธ์ที่เป็นตัวเลข

ในกรณีของคุณ DAY (TODAY ()) ส่งคืนค่า 18 (ตัวเลข) อย่างถูกต้องซึ่งฉันจินตนาการว่าคุณกำหนดให้กับเซลล์ที่มีการจัดรูปแบบเพื่อแสดงวันที่ในรูปแบบย่อ - ดังนั้น 18 แสดงเป็น 18/01/1900 เนื่องจากไปยัง Excel เมื่อมีการตีความวันที่ 18 เป็นวันที่นั่นหมายความว่าอะไร

หากคุณจัดรูปแบบเซลล์นั้นเป็นรูปแบบตัวเลขคุณจะเห็นคำตอบปรากฏในแบบที่คุณคาดไว้เช่น 18


2

ไม่มีอะไรผิดปกติกับสูตรของคุณ สิ่งที่ฉันอยากจะแนะนำให้คุณถ้าสูตรไม่สร้างผลลัพธ์ที่คาดหวังมันจะสร้างข้อผิดพลาดหรือผลลัพธ์ผิด เนื่องจากคุณไม่ได้พูดถึงสิ่งที่สูตรทำมี!

ในขณะเดียวกันฉันต้องการแสดงให้คุณเห็นถึงความเป็นไปได้ในการรับค่า DAY ใน Number ใน Excel

ตรวจสอบภาพหน้าจอด้านล่าง

รับวันในจำนวน

หมายเหตุ:

วันที่อยู่ในมือถือ E166 คอลัมน์ที่ 2 Fมีผลลัพธ์และคอลัมน์ที่ 3 Gแสดงสูตรที่ฉันใช้

นอกจากนี้คุณยังสามารถ ues ฟังก์ชัน TEXT เพื่อรับค่า Day เป็นข้อมูล Text

ค่าเป็นสีแดงมีรูปแบบเซลล์แบบกำหนดเอง DD คุณสามารถใช้กับเซลล์ (S) เพื่อแสดงเฉพาะค่าวันของวันที่ (S)

หมายเหตุฉันแนะนำให้คุณมีความเป็นไปได้ทั้งหมดเนื่องจากคุณได้กล่าวว่าโดยทั่วไปคุณไม่ใช่ผู้ใช้ Excel

หวังว่าสิ่งนี้จะช่วยคุณอย่าลืมโพสต์ข้อผิดพลาดสูตรของคุณให้


1

สูตรของคุณถูกแต่งอย่างถูกต้อง ผลลัพธ์ที่ไม่คาดคิดเกิดจากการที่ Excel เก็บข้อมูลประเภทต่างๆ

มีระบบที่คล้ายกันสองระบบที่ Excel ใช้สำหรับจัดเก็บวันที่โดยยึดตามการตั้งค่าระดับสมุดงาน

ระบบวันที่ 1900

ในระบบวันที่ 1900 วันแรกที่ได้รับการสนับสนุนคือ 1 มกราคม 1900 เมื่อคุณป้อนวันที่วันที่จะถูกแปลงเป็นเลขลำดับที่แสดงถึงจำนวนวันที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1900 ตัวอย่างเช่นหากคุณ ป้อน 5 กรกฎาคม 1998, Excel แปลงวันที่ให้เป็นหมายเลข 35981

โดยค่าเริ่มต้น Microsoft Excel สำหรับ Windows ใช้ระบบวันที่ 1900 ระบบวันที่ 1900 ช่วยให้เข้ากันได้ดีขึ้นระหว่าง Excel และโปรแกรมสเปรดชีตอื่น ๆ เช่น Lotus 1-2-3 ที่ออกแบบมาให้ทำงานภายใต้ MS-DOS หรือ Microsoft Windows

ระบบวันที่ 1904

ในระบบวันที่ 1904 วันแรกที่ได้รับการสนับสนุนคือ 1 มกราคม 1904 เมื่อคุณป้อนวันที่วันที่จะถูกแปลงเป็นเลขลำดับที่แสดงถึงจำนวนวันที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1904 ตัวอย่างเช่นหากคุณ ป้อน 5 กรกฎาคม 1998, Excel แปลงวันที่ให้เป็นหมายเลข 34519

โดยค่าเริ่มต้น Microsoft Excel สำหรับ Macintosh ใช้ระบบวันที่ 1904 เนื่องจากการออกแบบของคอมพิวเตอร์ Macintosh รุ่นแรก ๆ จึงไม่รองรับวันที่ก่อนวันที่ 1 มกราคม 1904 การออกแบบนี้มีวัตถุประสงค์เพื่อป้องกันปัญหาที่เกี่ยวข้องกับความจริงที่ว่า 1900 ไม่ได้เป็นปีอธิกสุรทิน หากคุณเปลี่ยนเป็นระบบวันที่ 1900 Excel สำหรับ Macintosh จะสนับสนุนวันที่ก่อนวันที่ 1 มกราคม 1900

ข้อความที่ตัดตอนมาเหล่านี้มาจาก: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

หมายเลขซีเรียลคือการนับจำนวนวันที่อย่างง่ายตั้งแต่วันที่ 1 มกราคม 1900 รวมถึงวันที่ 29 กุมภาพันธ์ 2443 สมมติว่าฟังก์ชัน DAY อย่างไรก็ตามฟังก์ชั่น DAY สามารถคิดเพิ่มเติมว่าเป็นฟังก์ชันการแปลงประเภทข้อมูล จะใช้หมายเลขวันที่เป็นข้อมูลเข้าและส่งกลับจำนวนเต็มเป็นผลลัพธ์ ในตัวอย่างของคุณถ้าเราคิดว่า18แทนอนุกรมวันที่และนับ 18 วันล่วงหน้าตั้งแต่วันที่ 1 มกราคม 1900 เราจะสิ้นสุดในวันที่ 18 มกราคม 1900

การแก้ไขอย่างง่ายที่ส่วนหน้าคือการเปลี่ยนรูปแบบเซลล์ของคุณเป็นอย่างอื่นเช่นหมายเลขหรือทั่วไป สิ่งนี้จะบอกให้ Excel แสดงให้คุณเห็นว่าเป็นจำนวนเต็มแทนที่จะพยายามตีความมันเป็นอนุกรมวันที่ ในส่วนหลังทุกอย่างเป็นเรื่องดี ผลลัพธ์จำนวนเต็มสามารถใช้ในสูตรอื่นและจะทำงานได้อย่างถูกต้อง

ตัวอย่างเช่นสมมติว่าเราต้องการสร้างสูตรตามเงื่อนไขซึ่งบอกกับเราว่า 15 ที่ผ่านมาในเดือนปัจจุบันหรือไม่ เราสามารถทำได้โดยใช้:

=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")

มันจะยากมากที่จะบรรลุผลลัพธ์เดียวกันโดยใช้อนุกรมวันที่ดังนั้นฟังก์ชัน DAY ที่ส่งคืนจำนวนเต็มจะกลายเป็นประโยชน์มากขึ้นในบริบทของกรณีการใช้งานทั่วไปของ Excel

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.