ไม่สามารถรับ Excel ให้จดจำวันที่ในคอลัมน์


45

ฉันมีปัญหาในการทำงานกับเดทใน Excel อย่างต่อเนื่องฉันต้องทำอะไรผิด แต่ฉันไม่เข้าใจ

ฉันมีสเปรดชีตส่งออกจากเซิร์ฟเวอร์แลกเปลี่ยนของเราที่มีคอลัมน์พร้อมวันที่ พวกเขาออกมาในรูปแบบสหรัฐแม้ว่าฉันจะอยู่ในสหราชอาณาจักร

คอลัมน์ที่เป็นปัญหามีลักษณะเช่นนี้

04/08/2012
04/09/2009
04/01/2010
04/21/2011
04/05/2012
08/30/2009
08/29/2010
08/28/2011

ใน Excel Format Cells...ผมได้เน้นคอลัมน์และเลือก ในกล่องโต้ตอบนี้ฉันได้เลือกDate, เลือกEnglish (United States)เป็นสถานที่และเลือกรูปแบบวันที่ที่ตรงกันจากรายการ ฉันกดตกลงและพยายามเรียงลำดับข้อมูลตามคอลัมน์นี้

ในกล่องโต้ตอบเรียงลำดับฉันเลือกคอลัมน์นี้เลือกเรียงลำดับตามค่า แต่ลำดับให้ตัวเลือกสำหรับ A ถึง Z เท่านั้นไม่ใช่เก่าที่สุดไปหาใหม่ที่สุดเท่าที่ฉันคาดหวัง

ซึ่งจะเรียงลำดับข้อมูลวันที่ด้วยตัวเลขสองหลัก

ฉันรู้ว่าฉันสามารถจัดรูปแบบข้อมูลนี้เป็น ISO อีกครั้งจากนั้นการเรียงลำดับ A ถึง Z จะใช้งานได้ แต่ฉันไม่ควรมีเช่นกัน มันคืออะไร?

แก้ไข:ฉันทำให้ความยุ่งเหยิงเพิ่มขึ้น แต่สิ่งนี้น่าจะได้ไปที่@ r0bertsคำตอบคำแนะนำแรกของเขาเกี่ยวกับ Text to Columns โดยไม่มีตัวคั่นและเลือก 'MDY' เป็นประเภทของข้อมูล นอกจากนี้หากคุณมีเวลา (เช่น04/21/2015 18:34:22) คุณจะต้องกำจัดข้อมูลเวลาก่อน อย่างไรก็ตามหลังจากนั้นวิธีการที่แนะนำโดย@ r0bertsทำงานได้ดี


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

รูปแบบของข้อมูลที่ส่งออกคืออะไร มันเป็น CSV หรือ XLSX
Excellll

คำตอบ:


70

ปัญหา: Excel ไม่ต้องการจดจำวันที่เป็นวันที่แม้ว่าจะผ่าน "จัดรูปแบบเซลล์ - หมายเลข - กำหนดเอง" คุณกำลังพยายามบอกให้ชัดเจนว่าเป็นวันที่ด้วย " mm/dd/yyyy" อย่างที่คุณรู้ เมื่อ excel จดจำบางอย่างเป็นวันที่มันจะเก็บข้อมูลนี้เป็นตัวเลขเช่น " 41004" แต่จะแสดงเป็นวันที่ตามรูปแบบที่คุณระบุ หากต้องการเพิ่มความสับสน excel อาจแปลงเฉพาะบางส่วนของวันที่ของคุณเช่น 08/04/2009 แต่ปล่อยอื่น ๆ เช่น 07/28/2009 unconverted

วิธีแก้ปัญหา: ขั้นตอนที่ 1 และ 2

1)เลือกคอลัมน์วันที่ ภายใต้ข้อมูลให้เลือกปุ่มข้อความเป็นคอลัมน์ บนหน้าจอแรกปุ่มลาที่ " คั่น " และคลิกถัดไป ยกเลิกการคลิกใด ๆ ของกล่องตัวคั่น (กล่องใด ๆ ที่ว่างเปล่าไม่มีเครื่องหมายถูก) และคลิกถัดไป ภายใต้รูปแบบข้อมูลคอลัมน์เลือกวันและเลือกMDYในกล่องคำสั่งผสมที่อยู่ติดกันและคลิกเสร็จสิ้น ตอนนี้คุณได้รับค่าวันที่ (เช่น Excel ยอมรับค่าของคุณเป็นDateชนิดข้อมูล) แต่การจัดรูปแบบน่าจะเป็นวันที่เกิดเหตุไม่ใช่ที่mm/dd/yyyyคุณต้องการ

2)เพื่อให้ได้รูปแบบวันที่สหรัฐต้องการแสดงอย่างถูกต้องคุณต้องเลือกคอลัมน์ (ถ้าไม่ได้เลือก) แล้วภายใต้รูปแบบเซลล์ - จำนวนเลือกวันและเลือกตำแหน่งที่ตั้ง: อังกฤษ (สหรัฐอเมริกา) รูปแบบนี้จะให้รูปแบบ " m/d/yy" จากนั้นคุณสามารถเลือกกำหนดเองและคุณสามารถพิมพ์ " mm/dd/yyyy" หรือเลือกจากรายการสตริงที่กำหนดเอง

ทางเลือก : ใช้ LibreOffice Calc เมื่อวางข้อมูลจากโพสต์ของ Patrick ให้เลือก Paste Special ( Ctrl+Shift+V) และเลือกข้อความที่ยังไม่ฟอร์แมต จะเป็นการเปิดกล่องโต้ตอบ "นำเข้าข้อความ" ชุดอักขระยังคงเป็น Unicode แต่สำหรับภาษาที่เลือกภาษาอังกฤษ (สหรัฐอเมริกา); คุณควรทำเครื่องหมายที่ช่อง "ตรวจหาหมายเลขพิเศษ" วันที่ของคุณจะปรากฏในรูปแบบสหรัฐอเมริกาเริ่มต้นและสามารถจัดเรียงวันที่ได้ หากคุณต้องการรูปแบบพิเศษของสหรัฐอเมริกา MM / DD / YYYY คุณต้องระบุสิ่งนี้ครั้งเดียวผ่าน "จัดรูปแบบเซลล์" - ก่อนหรือหลังการวาง

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

ข้อมูล | ข้อความเป็นคอลัมน์

อัปเดตเกี่ยวกับอะโพสโทรฟีหลังวาง:คุณสามารถเห็นได้ในแถบสูตรที่อยู่ในเซลล์ที่ไม่รู้จักวันที่ว่ามีแอพอะโทรฟีชั้นนำ ซึ่งหมายความว่าในเซลล์ที่จัดรูปแบบเป็นตัวเลข (หรือวันที่) มีสตริงข้อความ คุณสามารถพูดได้ - อะพอสโทรฟีชั้นนำจะป้องกันสเปรดชีตเพื่อให้จดจำหมายเลขได้ คุณจำเป็นต้องรู้เพื่อดูในแถบสูตรสำหรับสิ่งนี้ - เนื่องจากสเปรดชีตจะแสดงสิ่งที่ดูเหมือนว่าเป็นตัวเลขที่จัดชิดซ้าย เพื่อจัดการกับปัญหานี้ให้เลือกคอลัมน์ที่คุณต้องการแก้ไขให้เลือกในเมนูData | Text to Columnsและคลิกตกลง บางครั้งคุณจะสามารถระบุประเภทข้อมูลได้ แต่หากคุณได้กำหนดรูปแบบของคอลัมน์ให้เป็นประเภทข้อมูลเฉพาะของคุณคุณจะไม่จำเป็นต้องใช้ คำสั่งมีไว้เพื่อแยกคอลัมน์ข้อความอย่างน้อยสองรายการโดยใช้ตัวคั่น แต่มันก็ใช้งานได้อย่างมีเสน่ห์สำหรับปัญหานี้เช่นกัน ฉันได้ทดสอบมันในLibreofficeแต่มีรายการเมนูเดียวกันในExcelด้วย


ฉันพูดถึงประเด็นของคุณใน OP ของฉัน การแยกค่าวันที่ไปยังคอลัมน์ (แล้วรวมอีกครั้งในรูปแบบ ISO) เป็นไปได้แน่นอน แต่เนื่องจาก Excel มีฟังก์ชันวันที่ในตัวที่กว้างขวางฉันต้องการใช้ประโยชน์จากข้อมูลวันที่ที่ฉันมี ตัวเลือกที่สองของคุณเป็นสิ่งที่ฉันอธิบายสิ่งที่ไม่ทำงานสำหรับฉัน
Patrick

เรียน Patrick โปรดอ่านอย่างละเอียด หรือคุณสามารถใช้ Libre Office Calc ด้วยข้อมูลของคุณที่ใช้งานได้ทันทีคุณเพียงแค่ทำการจัดรูปแบบคอลัมน์ล่วงหน้าสำหรับวันที่ - อังกฤษ (สหรัฐอเมริกา) และเมื่อวาง "วางแบบพิเศษ" "ข้อความที่ไม่ได้จัดรูปแบบ" - เพียงบอกกล่องโต้ตอบว่าภาษานั้น อังกฤษ (สหรัฐอเมริกา) และอย่าลืมทำเครื่องหมายในช่องเพื่อรับรู้หมายเลขพิเศษ ในคำตอบของฉันฉันพยายามที่จะบอกใบ้อย่างแรงเท่าที่จะเป็นไปได้ว่า Excel นั้นไม่สอดคล้องกับเรื่องนี้ (บั๊กกี้) และคุณต้องหันไปทำตามขั้นตอนที่ 1 และ 2 เพื่อให้ได้ผลลัพธ์ที่คุณต้องการ
r0berts

ฉันควรอ่านคำถามของคุณอย่างถูกต้อง คำแนะนำแรกของคุณใช้งานได้จริง คุณควรได้รับรางวัล ขอบคุณสำหรับความช่วยเหลือของคุณ
Patrick

ข้อเสนอแนะ 1 ทำงานเหมือนจับใจ ขอบคุณ
อดัม

คำตอบที่ดีจริงๆ !!!
Adders

8

เลือกคอลัมน์ทั้งหมดและไปค้นหาและแทนที่และเพียงแทนที่ด้วย"/"/


คุณช่วยอธิบายสิ่งนี้เพื่อแก้ไขปัญหาได้หรือไม่?
fixer1234

มันใช้งานได้จริงและเป็นเรื่องง่าย สิ่งที่เปลี่ยนทดแทนเพียงลบศูนย์นำหน้า
PedroGabriel

2
ก่อนอื่นใช้งานได้ ทางออกที่ดีที่สุด ไกลกว่าโซลูชันที่ตรวจสอบ :) หากต้องการ fixer1234 และ @PedroGabriel: ไม่ใช่ว่าจะลบศูนย์ ในการแทนที่เนื้อหาของเซลล์ Excel จะประเมินว่าเซลล์ผลลัพธ์มีสูตรข้อความหรือตัวเลข หลังจากทำการแทนที่ "/" มันจะแปลเซลล์ให้มีหมายเลข (ซึ่งวันที่ทางเทคนิคคือ Excel) ดังนั้นจึงสามารถจัดเรียงได้อย่างถูกต้อง (ผู้ใช้ที่ฉลาดอาจรู้จักเทคนิคการค้นหา / แทนที่ด้วยอักขระ "=" ในสถานการณ์ที่คล้ายกันกับเนื้อหา reinterpreting ของ Excel) อย่างไรก็ตาม Jair มีทางออกที่ดีที่สุด :)
MicrosoftShouldBeKickedInNuts

@ MicrosoftShouldBeKickedInNuts วันนี้ฉันไม่รู้เลยว่าทำไมฉันถึงพูดถึงเลขศูนย์มันไม่มีอะไรเกี่ยวข้องกับเลขศูนย์ ... นี่เป็นคำตอบที่ดีที่สุดยังคงใช้อันนี้อยู่ ไชโย
PedroGabriel

3

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


3

ฉันกำลังจัดการกับปัญหาที่คล้ายกันกับหลายพันแถวที่แยกออกมาจากฐานข้อมูล SAP และอย่างลึกลับรูปแบบวันที่สองแบบในคอลัมน์วันที่เดียวกัน (ส่วนใหญ่เป็นมาตรฐานของเรา "YYYY-MM-DD" แต่ประมาณ 10% เป็น "MM-" DD-YYY ") การแก้ไข 650 แถวด้วยตนเองทุกเดือนไม่ใช่ตัวเลือก

ไม่มี (ศูนย์ ... 0 ... ไม่มี) ของตัวเลือกข้างต้นทำงาน ใช่ฉันลองพวกเขาทั้งหมด การคัดลอกไปยังไฟล์ข้อความหรือการส่งออกไปยัง txt อย่างชัดเจนไม่มีผลต่อรูปแบบ (หรือไม่มีเลย) ของวันที่ 10% ที่เพียงแค่นั่งอยู่ตรงมุมของพวกเขาปฏิเสธที่จะประพฤติตน

วิธีเดียวที่ฉันสามารถแก้ไขได้คือการแทรกคอลัมน์ว่างทางด้านขวาของคอลัมน์วันที่ที่ทำงานผิดปกติและใช้สูตรต่อไปนี้ที่ค่อนข้างง่าย:

(สมมติว่าข้อมูลที่ทำงานผิดปกติของคุณอยู่ในColumn D)

=IF(MID(D2,3,1)="-",DATEVALUE(TEXT(CONCATENATE(RIGHT(D2,4),"-",LEFT(D2,5)),"YYYY-MM-DD")),DATEVALUE(TEXT(D2,"YYYY-MM-DD")))

ฉันสามารถคัดลอกผลลัพธ์ในคอลัมน์ที่คำนวณใหม่ของฉันด้านบนของวันที่ไม่ทำงานโดยวาง "ค่า" เฉพาะหลังจากที่ฉันสามารถลบคอลัมน์จากการคำนวณของฉันได้


3

สิ่งนี้อาจไม่เกี่ยวข้องกับผู้ถามเดิม แต่อาจช่วยคนอื่นที่ไม่สามารถจัดเรียงคอลัมน์วันที่

ฉันพบว่า Excel จะไม่รู้จักคอลัมน์ของวันที่ซึ่งอยู่ก่อนปี 1900 ยืนยันว่าเป็นคอลัมน์ของข้อความ (เนื่องจาก 1/1/1900 มีตัวเลขเทียบเท่า 1 และไม่อนุญาตให้ใช้จำนวนลบ) ดังนั้นฉันจึงทำการแทนที่วันที่ของฉันโดยทั่วไป (ซึ่งอยู่ในช่วงปี 1800) เพื่อนำพวกเขาไปสู่ยุค 1900 เช่น 180 -> 190, 181 -> 191 เป็นต้นกระบวนการเรียงลำดับก็ใช้ได้ดี ในที่สุดฉันก็เปลี่ยนวิธีอื่นเช่น 190 -> 180

หวังว่านี่จะช่วยนักประวัติศาสตร์คนอื่น ๆ


2

ดูเหมือนว่า Excel จะไม่จดจำวันที่ของคุณเป็นวันที่ แต่จะจำข้อความได้ดังนั้นคุณจะได้รับตัวเลือกการจัดเรียงเป็น A ถึง Z หากคุณทำอย่างถูกต้องคุณควรได้รับสิ่งนี้:

http://i.stack.imgur.com/Qb4Pj.png

ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องแน่ใจว่า Excel จดจำวันที่ได้ CTRL+SHIFT+3วิธีที่ง่ายที่สุดที่จะทำคือการใช้ทางลัด

นี่คือสิ่งที่ฉันทำกับข้อมูลของคุณ ฉันเพียงแค่คัดลอกมันจากโพสต์ของคุณด้านบนและวางใน excel จากนั้นฉันใช้ทางลัดด้านบนและฉันได้รับตัวเลือกการจัดเรียงที่ต้องการ ตรวจสอบภาพ

http://i.stack.imgur.com/yAa6a.png


2
น่าเสียดายที่ทางลัดนั้นใช้ไม่ได้สำหรับฉัน
Patrick

ทางลัดทำอะไรในแพทริคระบบของคุณ
Firee

3
ทางลัดดูเหมือนจะไม่ทำอะไรเลย ฉันมีหลาย ๆ ระบบที่ใช้งาน Office 2007, 2010 และ 2013 และไม่มีระบบตอบสนองใด ๆ ต่อทางลัด CTRL SHIFT 3 CTRL 1 ปรากฏขึ้นอย่างถูกต้องขึ้นโต้ตอบ 'จัดรูปแบบเซลล์'
Patrick

แป้นพิมพ์ลัด Ctrl + Shift + 3 มีการอ้างอิงค่อนข้างลื่นไหลเป็น“ Ctrl + Shift + #” ที่นี่หมายถึง“ ใช้รูปแบบวันที่ด้วยวันเดือนและปี” ใน Excel 2007, 2010, 2013 และ 2016 (เฉพาะ , ใน Excel 2013 ของฉัน, มันคือ“ d-mmm-yy”.) เอกสาร Microsoft ไม่ได้อธิบายว่าเซลล์ต้องมีอยู่แล้ว… (ต่อ)
Scott

(ต่อ) ... ค่าที่ Excel ตระหนักเป็นข้อมูลวัน / เวลาและดูเหมือนว่าไม่มีใครที่นี่ได้อย่างชัดเจนอธิบายว่าตั้งแต่แพทริคอยู่ในประเทศอังกฤษรุ่นของเขา Excel จะตระหนักสตริงเช่น04/08/2012, 04/09/2009และ04/01/20104 ส.ค. 2012 , 4-Sep-2009, และ 4-Jan-2010, ตามลำดับและดำเนินการ04/21/2011เป็นสตริงข้อความ (เนื่องจากไม่มีเดือนที่ 21) เนื่องจากค่าบางค่าเป็นข้อความ (และบางค่าสันนิษฐานว่ามีการตีความผิดจริง) การจัดรูปแบบ (เช่นโดยแป้นพิมพ์ลัด Ctrl + Shift + 3) จะไม่ทำสิ่งใดได้ดี
สกอตต์

2

ฉันสงสัยว่าปัญหาคือ Excel ไม่สามารถเข้าใจรูปแบบ ... แม้ว่าคุณจะเลือกรูปแบบวันที่ แต่ยังคงเป็นข้อความ

คุณสามารถทดสอบสิ่งนี้ได้อย่างง่ายดาย: เมื่อคุณพยายามอัปเดตรูปแบบวันที่ให้เลือกคอลัมน์และคลิกขวาแล้วเลือกเซลล์รูปแบบ (ตามที่คุณทำ) แต่เลือกตัวเลือก 2001-03-14 (ใกล้ด้านล่างของรายการ) จากนั้นตรวจสอบรูปแบบของเซลล์ของคุณ

ฉันจะสงสัยว่าเฉพาะบางรูปแบบวันที่อัปเดตอย่างถูกต้องแสดงว่า Excel ยังคงรักษามันเหมือนสตริงไม่ใช่วันที่ (หมายเหตุรูปแบบที่แตกต่างกันในภาพหน้าจอด้านล่าง)!

ป้อนคำอธิบายรูปภาพที่นี่

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

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

ดังนั้นสร้างแผ่นงาน Excel ใหม่ที่เรียกว่า ImportData.xlsm (เปิดใช้งาน excel) นี่คือไฟล์ที่เราจะนำเข้าไฟล์ Exchange Excel ที่ส่งออกไป!

เพิ่ม VBa นี้ลงในไฟล์ ImportData.xlsm

Sub DoTheCopyBit()

Dim dateCol As String
dateCol = "A"        'UPDATE ME TO THE COLUMN OF THE DATE COLUMN

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "C:\Users\Dave\Desktop\"                   'UPDATE ME
fileName = Dir(directory & "ExportedExcel.xlsx")       'UPDATE ME (this is the Exchange exported file location)

Do While fileName <> ""

'MAKE SURE THE EXPORTED FILE IS OPEN
Workbooks.Open (directory & fileName)

Workbooks(fileName).Worksheets("Sheet1").Copy _

Workbooks(fileName).Close

fileName = Dir()

Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True

Dim row As Integer
row = 1
Dim i As Integer
Do While (Range(dateCol & row).Value <> "")

     Dim splitty() As String
     splitty = Split(Range(dateCol & row).Value, "/")
     Range(dateCol & row).NumberFormat = "@"
     Range(dateCol & row).Value = splitty(2) + "/" + splitty(0) + "/" + splitty(1)
     Range(dateCol & row).NumberFormat = "yyyy-mm-dd"
     row = row + 1
Loop


End Sub

สิ่งที่ฉันทำก็คืออัปเดตรูปแบบวันที่เป็น yyyy-mm-dd เพราะด้วยวิธีนี้แม้ว่า Excel จะให้ตัวกรองการเรียง AZ ของคุณแทนค่าใหม่ล่าสุด แต่ก็ยังใช้งานได้!

ฉันแน่ใจว่าโค้ดด้านบนมีข้อบกพร่อง แต่เห็นได้ชัดว่าฉันไม่รู้ว่าคุณมีข้อมูลประเภทใด แต่ฉันทดสอบด้วยคอลัมน์วันที่เดียว (ตามที่คุณมี) และมันใช้ได้ดีสำหรับฉัน!

ฉันจะเพิ่ม VBA ใน MS Office ได้อย่างไร


ดี ... ฉันจะออกจากนี้ไปสองสามวันเพื่อให้มันเพิ่มขึ้นเล็กน้อย แต่มันดูเหมือนคำตอบที่ชัดเจน นี่มันบ้าจริง ๆ แต่ฉันไม่อยากเชื่อเลยว่ามันจำเป็น เนื่องจากฉันได้แก้ไขข้อมูลที่แหล่งที่มาด้วยฟังก์ชันเล็ก ๆ ใน PowerShell เพื่อพลิกไปเป็นรูปแบบ ISO ในจุดที่ฉันไม่สนใจว่า Excel รับรู้เป็นวันที่: /
Patrick

2

https://support.office.com/en-us/article/Convert-dates-stored-as-text-to-dates-8df7663e-98e6-4295-96e4-32a67ec0a680

วิธีแก้ปัญหาง่ายๆที่นี่ - สร้างคอลัมน์ใช้ใหม่ = สูตรวันที่ (เซลล์) จากนั้นคัดลอกสูตรไปยังแถวอื่น ๆ ของคุณ - ไม่กี่วินาทีเพื่อแก้ไข


1

ฉันคิดออก!

มีช่องว่างที่จุดเริ่มต้นและตอนท้ายของวันที่

  1. หากคุณใช้ค้นหาและแทนที่และกดแป้นเว้นวรรคมันจะไม่ทำงาน
  2. คุณต้องคลิกขวาก่อนหมายเลขเดือนกด Shift และลูกศรซ้ายเพื่อเลือกและคัดลอก บางครั้งคุณต้องใช้เมาส์เพื่อเลือกพื้นที่
  3. จากนั้นวางสิ่งนี้เป็นช่องว่างในการค้นหาและแทนที่และวันที่ทั้งหมดของคุณจะกลายเป็นวันที่
  4. หากมีช่องว่างและวันที่เลือกข้อมูล> ไปที่ข้อมูล> ข้อความเป็นคอลัมน์> คั่นแล้ว> เว้นวรรคเป็นตัวคั่นและสิ้นสุด
  5. ช่องว่างทั้งหมดจะถูกลบออก

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

0

หาก Excel ปฏิเสธไม่ยอมรับคอลัมน์ของคุณว่าเป็นวันที่ให้แทนที่ด้วยคอลัมน์อื่น:

  • เพิ่มคอลัมน์ใหม่ทางด้านขวาของคอลัมน์เก่า
  • คลิกขวาที่คอลัมน์ใหม่และเลือก Format
  • ตั้งค่ารูปแบบเป็น date
  • เน้นคอลัมน์เก่าทั้งหมดและคัดลอก
  • ไฮไลต์เซลล์ด้านบนของคอลัมน์ใหม่และเลือกPaste Specialและวางเท่านั้นvalues
  • ตอนนี้คุณสามารถลบคอลัมน์เก่าออกได้แล้ว

ฉันเคยลองสิ่งนี้แล้วมันจะทำงานเหมือนกันกับคอลัมน์ใหม่ ดูคำตอบของ Dave ที่หน้าจอด้านบนเป็นสิ่งที่ฉันไม่สำคัญว่าฉันจะย้ายไปมาระหว่างคอลัมน์กี่ครั้ง
แพทริค

ลองบังคับให้มีปัญหาโดยใช้ฟังก์ชัน DATEVALUE (คอลัมน์เก่า) ในสูตรบนคอลัมน์ใหม่จากนั้นใช้รายการการจัดรูปแบบตัวเลขแบบหล่นลงบนแถบริบบิ้นหน้าแรกเพื่อเลือกวันที่สั้น / ยาว
harrymc

0

ฉันเพียงแค่คัดลอกหมายเลข 1 (หนึ่ง) และคูณลงในคอลัมน์วันที่ (ข้อมูล) โดยใช้ฟังก์ชันพิเศษของ PASTE จากนั้นเปลี่ยนเป็นรูปแบบทั่วไปเช่น 42102 จากนั้นไปใช้วันที่ในรูปแบบและตอนนี้จะรับรู้ว่าเป็นวันที่

หวังว่านี่จะช่วยได้


0

โซลูชันข้างต้นทั้งหมด - รวมถึง r0berts - ไม่สำเร็จ แต่พบโซลูชันที่แปลกประหลาดซึ่งกลายเป็นการแก้ไขที่เร็วที่สุด

ฉันพยายามจัดเรียง "วันที่" บนสเปรดชีตที่ดาวน์โหลดมาของธุรกรรมในบัญชี

สิ่งนี้ถูกดาวน์โหลดผ่านเบราว์เซอร์โครเมี่ยม ไม่มีการจัดการ "วันที่" จำนวนมากที่จะทำให้พวกเขาได้รับการยอมรับว่าเรียงลำดับจากเก่าไปเป็นใหม่

แต่จากนั้นฉันดาวน์โหลดผ่านเบราว์เซอร์ INTERNET EXPLORER น่าทึ่งฉันสามารถจัดเรียงได้ทันทีโดยไม่ต้องสัมผัสกับคอลัมน์

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


0

ทางออกของฉันในสหราชอาณาจักร - ฉันมีนัดกับจุดในแบบนี้:

03.01.17

ฉันแก้ไขสิ่งต่อไปนี้:

  1. เน้นทั้งคอลัมน์
  2. ไปที่ค้นหาและเลือก / แทนที่
  3. ฉันแทนที่การหยุดเต็มทั้งหมดด้วยปุ่มกลางเช่น 03.01.17 03-01-17
  4. เน้นคอลัมน์ไว้เสมอ
  5. จัดรูปแบบเซลล์แท็บตัวเลขเลือกวันที่
  6. ใช้ประเภท14-03-12(จำเป็นสำหรับฉันที่จะมีเส้นประกลาง)
  7. ภาษาอังกฤษ (สหราชอาณาจักร)

เมื่อเรียงคอลัมน์วันที่ทั้งหมดของปีจะถูกจัดเรียง


0

ฉันลองใช้คำแนะนำต่าง ๆ แต่พบวิธีแก้ปัญหาที่ง่ายที่สุดสำหรับฉันมีดังนี้ ...

ดูภาพที่ 1 และ 2 สำหรับตัวอย่าง ... (หมายเหตุ - บางฟิลด์ถูกซ่อนอย่างตั้งใจเนื่องจากไม่ได้มีส่วนร่วมกับตัวอย่าง) ฉันหวังว่านี่จะช่วยได้...

  1. Field C - รูปแบบผสมที่ทำให้ฉันบ้าอย่างแน่นอน นี่คือข้อมูลที่มาจากฐานข้อมูลโดยตรงและไม่มีช่องว่างเพิ่มเติมหรือตัวละครที่บ้า เมื่อแสดงเป็นข้อความตัวอย่างวันที่ 01/01/2559 จะแสดงเป็นค่าประเภท '42504' ซึ่งผสมกับ 04/15/2006 ซึ่งแสดงให้เห็นว่าเป็นเช่นนั้น

  2. Field F - ที่ฉันได้รับความยาวของฟิลด์ C (สูตร LEN จะมีความยาว 5 จาก 10 ขึ้นอยู่กับรูปแบบวันที่) ฟิลด์นี้เป็นรูปแบบทั่วไปเพื่อความเรียบง่าย

  3. ฟิลด์ G - การได้รับส่วนประกอบเดือนของวันที่ผสม - ตามผลลัพธ์ความยาวในฟิลด์ F (5 หรือ 10) ฉันได้รับเดือนจากค่าวันที่ในฟิลด์ C หรือรับอักขระเดือนในสตริง

  4. ฟิลด์ H - การได้รับองค์ประกอบวันของวันที่ผสม - ตามความยาวผลลัพธ์ในฟิลด์ F (5 หรือ 10) ฉันได้รับวันจากค่าวันที่ในฟิลด์ C หรือรับอักขระวันในสตริง

ฉันสามารถทำสิ่งนี้ได้ตลอดทั้งปีจากนั้นสร้างวันที่จากองค์ประกอบสามอย่างที่สอดคล้องกัน มิฉะนั้นฉันสามารถใช้ค่าวันเดือนและปีในการวิเคราะห์ของฉัน

ภาพที่ 1: สเปรดชีทพื้นฐานแสดงค่าและชื่อฟิลด์

ภาพที่ 2: สเปรดชีตแสดงคำอธิบายการจับคู่สูตรด้านบน

ฉันหวังว่านี่จะช่วยได้.


(1) แม้ว่าจะเป็นการดีที่จะโพสต์ภาพหน้าจอเพื่อแสดงว่าคำตอบของคุณใช้งานได้จริง แต่เราต้องการให้สูตรในโซลูชันของคุณโพสต์เป็นข้อความในส่วนเนื้อหาของคำตอบของคุณเพื่อให้ผู้คนสามารถคัดลอกและวาง (2) คุณดูเหมือนจะเข้าใจปัญหา - วันที่04/08เป็นตัวเลขเช่นนั้นไม่ชัดเจน 04/08จะถูกตีความว่าเป็นวันที่ 8 เมษายนในบางแห่ง (เช่นสหรัฐอเมริกา) และ 4-สิงหาคมในอื่น ๆ (เช่นอังกฤษ) แต่สิ่งเหล่านี้คลุมเครืออย่างแม่นยำเพราะจำนวนเดือนและวันต่อเดือนนั้นแตกต่างกัน … (ต่อ)
สกอตต์

(ต่อ) ... ดังนั้นเหตุผลที่คุณจะใช้ยกเลิก  วันที่คลุมเครือเช่น01/01ในคำตอบของคุณหรือไม่ (3) ที่จริงแล้วฉันไม่แน่ใจว่าคุณเข้าใจปัญหาหรือคำตอบของคุณใช้งานได้จริงเพราะแผ่นงานของคุณมีแถวที่เดือน # คือ 15 ที่ดูเหมือนจะเป็นข้อผิดพลาดที่ชัดเจน และเนื่องจากว่า04/15ไม่คลุมเครือ - ต้องมีความหมาย 15 เมษายน - ไม่สมเหตุสมผลว่าวิธีการของคุณแยกวิเคราะห์01/11เป็นวันที่ 1 ของเดือนที่ 11 … (ต่อ)
สกอตต์

(ต่อ) ... (4) มันควรจะชี้ให้เห็นว่าที่ดีที่สุดที่คุณจะตอบจะจัดการวันเดียวที่มีลักษณะเหมือนNN / NN / NNNN มันจะล้มเหลวในวันที่ต้องการ5/8, 5/08, 5/28, และ05/8 11/8นอกจากนี้ - ข้อเท็จจริงที่สนุกสนาน - คำตอบของคุณจะล้มเหลวในวันที่ 17 17 พฤษภาคม 1927 และ≥ 17 ตุลาคม 2173 อย่ากังวลปัญหา Y10K เราอาจเริ่มมีปัญหาทันทีที่ 154 ปีนับจากนี้! (5) คุณพูดว่า“ ฉันสามารถทำสิ่งนี้ได้ตลอดทั้งปีจากนั้นสร้างวันที่จากองค์ประกอบสามอย่างที่สอดคล้องกัน” ดังนั้นทำไมคุณไม่แสดงและทำมัน? ... (ต่อ)
สกอตต์

(ต่อ) ... มันยากมากที่จะตรวจสอบว่าวิธีการของคุณทำงานเมื่อคุณแสดงเวอร์ชันที่ไม่สมบูรณ์ของมัน อันที่ไม่แสดงเดือนวันและปีที่ถูกประกอบใหม่เป็นวันที่ (6) อย่างที่ฉันบอกPatsaeedมันคงจะดีถ้าคุณใช้ข้อมูลของ OP จากคำถามแทนที่จะทำด้วยตัวเอง ความล้มเหลวในการใช้ข้อมูลของ OP อาจเป็นเรื่องดีถ้าคุณใช้ Patsaeed ดังนั้นอย่างน้อยเราก็สามารถเปรียบเทียบแอปเปิ้ลกับแอปเปิ้ล ... (ต่อ)
สกอตต์

(ต่อ) และไม่ว่าคุณจะใช้ข้อมูลของ OP หรือของคนอื่นมันคงจะดีถ้าคุณได้แสดงข้อมูลต้นฉบับให้กับสถานการณ์ของคุณ (ตัวอย่างเช่นสำหรับแถว 7 เป็น01/11/2016หรือ  11/01/2016ไม่) และถ้าคุณจะใช้ข้อมูลของคุณเองมันคงจะดีถ้าคุณรวมวันที่จากเดือนเดียวกันที่สาธิต (ตัวอย่าง) วิธี1/11และ1/21การจัดการ ต่างกัน และทำไมต้องมีข้อมูลซ้ำซ้อน คุณสูญเสียแถว 19 แถวโดยใช้ค่าสี่ค่าเดียวกันหลาย ๆ ครั้งกระจายออกไปมากกว่า 23 แถว
สกอตต์

0

การแบ่งปันเพียงเล็กน้อย แต่วิธีการแก้ปัญหาที่ง่ายกว่านั้นจะสำเร็จได้ ..... ไม่จำเป็นต้องเรียกใช้แมโครหรือสิ่งที่เกินบรรยาย .... สูตร MS excel ที่เรียบง่ายและการแก้ไข

ภาพรวม excel ภาพรวม:

ป้อนคำอธิบายรูปภาพที่นี่

  • วันที่อยู่ในรูปแบบผสม
  • ดังนั้นเพื่อสร้างรูปแบบวันที่แบบสมมาตรจึงมีการสร้างคอลัมน์พิเศษเพื่อแปลงคอลัมน์วันที่ 'รูปแบบผสม' เป็น TEXT
  • จากข้อความนั้นเราได้ระบุตำแหน่งของ "/" และข้อความกลางที่ได้รับการแยกออกมากำหนดวันเดือนปีที่ใช้สูตร MID
  • วันที่ซึ่งเดิมเป็นวันที่สูตรสิ้นสุดด้วย ERROR / #VALUEผลลัพธ์ - ในที่สุดจากสตริงที่เราสร้างขึ้น - เราได้แปลงสูตรเหล่านั้นเป็นวันที่ด้วยสูตร DATE
  • #VALUE ถูกเลือกเนื่องจากถูกเพิ่มโดย IFERROR ในสูตร DATE & คอลัมน์ถูกจัดรูปแบบตามต้องการ (ที่นี่ dd / mmm / yy)

* อ้างอิง SNAPSHOT ของ EXCEL SHEET ข้างต้น (= วันที่ผสม excel snapshot) *


(1) แม้ว่าจะเป็นการดีที่จะโพสต์ภาพหน้าจอเพื่อแสดงว่าคำตอบของคุณใช้งานได้จริง แต่เราชอบที่สูตรในโซลูชันของคุณจะโพสต์เป็นข้อความในเนื้อความของคำตอบของคุณเพื่อให้ผู้คนสามารถคัดลอกและวาง (2) สูตรของคุณเป็นที่แสดงในภาพของคุณจะไม่ถูกต้องตราบเท่าที่พวกเขาอ้างถึงคอลัมน์  V, Wและ  Xเมื่อพวกเขาควรจะหมายถึงคอลัมน์  B, และCD... (ต่อ)
สกอตต์

(ต่อ) ... (3) มันคงจะดีถ้าคุณใช้ข้อมูลของ OP จากคำถามแทนที่จะทำขึ้นเอง และไม่ว่าคุณจะใช้ข้อมูลของ OP หรือของตัวเองมันคงจะดีถ้าคุณได้แสดงการป้อนข้อมูลดั้งเดิมให้กับสถานการณ์ของคุณ (เช่นสำหรับแถว 9 มันเป็น5/8/2014หรือ  5/08/2014) และถ้าคุณจะใช้ข้อมูลของคุณเองมันคงจะดีถ้าคุณรวมวันที่จากเดือนเดียวกันเพื่อสาธิต (ตัวอย่าง) วิธี5/8และ5/28การจัดการที่แตกต่างกัน และทำไมต้องมีข้อมูลซ้ำซ้อน คุณเสียแถวไปแล้วหกแถวโดยใช้ค่าเดียวกันมากกว่าหนึ่งครั้ง
สกอตต์

0

สิ่งนี้เกิดขึ้นตลอดเวลาเมื่อแลกเปลี่ยนข้อมูลวันที่ระหว่างโลแคลใน Excel หากคุณสามารถควบคุมโปรแกรม VBA ที่ส่งออกข้อมูลได้ฉันขอแนะนำให้ส่งออกตัวเลขแทนวันที่แทนวันที่นั้น ตัวเลขมีความสัมพันธ์กับวันที่ไม่ซ้ำกันโดยไม่คำนึงถึงการจัดรูปแบบและสถานที่ ตัวอย่างเช่นแทนที่จะเป็นไฟล์ CSV ที่แสดง 24/09/2010 จะแสดง 40445

ในลูปการส่งออกเมื่อคุณถือแต่ละเซลล์ถ้าเป็นวันที่ให้แปลงเป็นตัวเลขโดยใช้ CLng (myDateValue) นี่คือตัวอย่างของการวนรอบของฉันที่ทำงานผ่านแถวทั้งหมดของตารางและส่งออกเป็น CSV (หมายเหตุฉันยังแทนที่เครื่องหมายจุลภาคในสตริงด้วยแท็กที่ฉันดึงเมื่อนำเข้า แต่คุณอาจไม่ต้องการสิ่งนี้):

arr = Worksheets(strSheetName).Range(strTableName & "[#Data]").Value

    For i = LBound(arr, 1) To UBound(arr, 1)
        strLine = ""
        For j = LBound(arr, 2) To UBound(arr, 2) - 1
            varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
            strLine = strLine & varCurrentValue & ","
        Next j
        'Last column - not adding comma
        varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
        strLine = strLine & varCurrentValue

        strLine = Replace(strLine, vbCrLf, "<vbCrLf>") 'replace all vbCrLf with tag - to avoid new line in output file
        strLine = Replace(strLine, vbLf, "<vbLf>") 'replace all vbLf with tag - to avoid new line in output file
        Print #intFileHandle, strLine
    Next i

0

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


0

ปัญหานี้ทำให้ฉันบ้าแล้วฉันก็สะดุดกับการแก้ไขที่ง่าย อย่างน้อยมันก็ใช้งานได้กับข้อมูลของฉัน มันง่ายที่จะทำและจดจำ แต่ฉันไม่รู้ว่าทำไมงานนี้ แต่เปลี่ยนประเภทตามที่ระบุข้างต้นไม่ได้ 1. เลือกคอลัมน์ที่มีวันที่ 2. ค้นหาปีในวันที่ของคุณเช่น 2015 เลือกแทนที่ทั้งหมดด้วยปีเดียวกันปี 2015 3. ทำซ้ำสำหรับแต่ละปี สิ่งนี้จะเปลี่ยนประเภทเป็นวันที่ตามจริงเป็นปี
สิ่งนี้ยังคงเป็นเรื่องยุ่งยากหากคุณมีข้อมูลเป็นเวลาหลายปี เร็วกว่าคือค้นหาและแทนที่ 201 ด้วย 201 (เพื่อแทนที่ 2010 ถึง 2019); แทนที่ 200 ด้วย 200 (เพื่อแทนที่ 2000 ถึง 2009); และอื่น ๆ



-1

ฉันใช้แม็ค

ไปที่การตั้งค่า excel> แก้ไข> ตัวเลือกวันที่> แปลงระบบวันที่โดยอัตโนมัติ

นอกจากนี้

ไปที่ตารางและตัวกรอง> วันที่กลุ่มเมื่อทำการกรอง

ปัญหาอาจเริ่มต้นเมื่อคุณได้รับไฟล์ที่มีระบบวันที่ที่แตกต่างกันและนั่นทำให้ฟังก์ชั่น excel date ของคุณแย่ลง


-2

year(a1)&if len(month(a1))=1,),"")&month(a1)&day(a1)ฉันมักจะเพียงแค่สร้างคอลัมน์พิเศษสำหรับการเรียงลำดับหรือรวมเป็นเงินทั้งสิ้นวัตถุประสงค์เพื่อให้การใช้งาน

ที่จะให้yyyymmddผลลัพธ์ที่สามารถจัดเรียง การใช้len(a1)เพียงแค่อนุญาตให้เพิ่มศูนย์พิเศษสำหรับเดือนที่ 1-9


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