การเรียงลำดับตัวอักษรและตัวเลขใน Excel


11

ใน Excel สามารถเรียงลำดับตัวอักษรและตัวเลขจาก a-1, a-2, a-3 ... a-123 แทน a-1, a-10, a-100, a-11 หรือไม่?

เรียงลำดับจากเก่าไปใหม่หรือผ่าน AZ แน่นอนจะไม่ให้ผลลัพธ์ที่ฉันต้องการ ฉันพยายามจัดรูปแบบเซลล์เป็นตัวเลข แต่ไม่ได้ผล

ผมติดอยู่.


สวัสดี @beccabecca โปรดยอมรับคำตอบเนื่องจากไม่เพียง แต่เป็นประโยชน์สำหรับผู้ที่มีคำถามคล้าย ๆ กับคุณเท่านั้น แต่ยังให้รางวัลแก่ผู้ที่ได้ทำงานเพื่อจัดหาทางออกให้กับคุณ ไชโย!
David Michael Gregg

คำตอบ:


4

ผลลัพธ์

User @ fixer1234 ถูกต้องคุณอาจต้องการใช้ฟังก์ชันสตริง นี่คือวิธีหนึ่งในการทำเช่นนั้น

ขั้นตอนที่ 1

[Updated]

ในคอลัมน์ "ตัวเลข" เน้นช่วงแล้วแยกข้อความที่เครื่องหมายยัติภังค์: do ...

Data> Text to Columns> Delimited> Next> Other: ->Finish

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

คุณสามารถใช้ฟังก์ชั่นนี้เพื่อแยกจำนวนจากคอลัมน์ A:

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

ขั้นตอนที่ 2

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

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

[อัพเดท]คุณสามารถใช้ฟังก์ชั่นต่อไปนี้ (ถึงตอนนี้เรายัง ไม่รู้ว่าทำไม ) เพื่อกำหนดจำนวนที่ยาวที่สุด:

=MAX(INDEX(LEN(C2:C14),,1))

หรือคุณก็สามารถพิมพ์สูตรต่อไปลงในเซลล์ (ที่คุณเห็นในภาพด้านบนเป็นเซลล์ที่ไฮไลต์สีส้ม) แต่แทนที่จะกดปุ่มของคุณที่สำคัญในการตั้งค่ามือถือตีฮอตENTER CTRL-SHIFT-ENTERนี้จะเปลี่ยนลักษณะของฟังก์ชั่นที่เปลี่ยนมันเป็นสูตรอาร์เรย์INDEX()โดยไม่ต้องของเล่นที่มีฟังก์ชั่นเช่น

=MAX(LEN(C2:C14))

(ตรวจสอบให้แน่ใจว่าช่วงนั้นถูกต้องสำหรับสเปรดชีตเฉพาะที่คุณใช้)

หลังจากที่คุณเข้าชมCTRL-SHIFT-ENTERเนื้อหาของเซลล์จะเปลี่ยนเป็นสิ่งนี้ แต่การพิมพ์ด้วยตนเองจะไม่ทำอะไรเลย:

{=MAX(LEN(C2:C14))}

อย่างไรก็ตามคุณต้องการที่จะทำมันเป็นเรื่องปกติ เพียงกำหนดจำนวนหลักที่ทำขึ้นจำนวนมากที่สุดในรายการของคุณ: "1" แน่นอนมี 1 หลัก, "10" มี 2 หลัก, "100" มี 3 หลักและอื่น ๆ

ขั้นตอนที่ 3

สุดท้ายในคอลัมน์ "ขยาย" ฟังก์ชั่นนี้จะแปลงตัวเลขจากคอลัมน์ "ตัวเลข" เป็นข้อความที่มีจำนวนศูนย์ก่อนหน้าที่คุณกำหนดว่าคุณควรใช้ในขั้นตอนที่ 2

=TEXT(C2,"000")

ตรวจสอบให้แน่ใจว่าคุณใส่เครื่องหมายคำพูดล้อมรอบศูนย์

หากตัวเลขที่ใหญ่ที่สุดมี 8 หลักฟังก์ชันของคุณจะเป็นดังนี้:

=TEXT(C2,"00000000")

2

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

สมมติว่าคำนำหน้า "a-" ไม่เคยเปลี่ยนแปลงรายการอยู่ใน col A เริ่มต้นในแถว 2 และ col B พร้อมใช้งาน ใน B2 คุณจะใส่สิ่งที่ต้องการ: = ค่า (กลาง (a2,3, len (a2) -2)) แล้วคัดลอกสูตรตามต้องการ ในการจัดเรียงให้เน้นทั้งสองคอลัมน์และเรียงลำดับบน B

หากสามารถมีคำนำหน้าอื่น ๆ พูด b-, c- ฯลฯ แยกส่วนข้อความในคอลัมน์อื่น จากนั้นเรียงลำดับในคอลัมน์ข้อความเป็นคอลัมน์เรียงลำดับแรกและคอลัมน์ตัวเลขเป็นคอลัมน์ที่สอง

ทุกสิ่งที่คุณเน้นจะถูกจัดเรียงตามคอลัมน์เรียงลำดับ

เพื่ออธิบายฟังก์ชั่นสตริงเริ่มต้นด้วยฟังก์ชั่นกลางซึ่งแยกสตริงของตัวละครจากภายในสตริงของตัวละคร mid (a2,3, len (a2) -2) ดูข้อความใน a2 เริ่มต้นด้วยอักขระที่สาม (ตัวเลขแรกที่สมมติว่าคำนำหน้าทั้งหมดคือ "a-") จากนั้นใช้จำนวนอักขระที่เป็น น้อยกว่าตัวเลขสองตัวในข้อความต้นฉบับ (ความยาวของข้อความต้นฉบับลบด้วยอักขระ "a-") ฟังก์ชันค่าจะเปลี่ยนผลลัพธ์นั้นเป็นตัวเลขแทนที่จะเป็นสตริงของอักขระที่เป็นตัวเลข


ขออภัยคุณสามารถอธิบายรายละเอียดเพิ่มเติมเล็กน้อยได้ไหม ฟังก์ชั่นสตริงคืออะไร?
beccabecca

ดังนั้นสำหรับ B3 จะเป็น = ค่า (กลาง (a3,3, len (a3) ​​-2))? ฉันถูกไหม? แล้วมันจะเป็นเช่นนี้ไปเรื่อย ๆ ? ขออภัยฉันหวังว่าฉันจะไม่ถามคำถามโง่ ๆ ...
beccabecca

คุณได้รับมัน เมื่อคุณสร้างสูตรใน B2 คุณสามารถคัดลอกเน้นเซลล์ B สำหรับแถวได้มากเท่าที่คุณต้องการและวาง มันจะเปลี่ยนการอ้างอิงเซลล์โดยอัตโนมัติเพื่อให้ตรงกับแต่ละแถว
fixer1234

2

ฉันมีข้อมูลต่อไปนี้:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Lisa            DD38                      90

Aletta          BC36                      85

Ava             AB40                      95

Sunny           BB34                      91

Sofia           CD36                      89

Johnny          CM07                      80

ข้อมูลเริ่มต้นที่จะเรียงลำดับตาม AlphaNumeric String

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

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Ava             AB40                      95

Sunny           BB34                      91

Aletta          BC36                      85

Sofia           CD36                      89

Johnny          CM07                      80

Lisa            DD38                      90

ผลลัพธ์สุดท้ายควรมีลักษณะเช่นนี้

ทำอย่างไร:

ขั้นตอนสำหรับการแปลงสตริงตัวอักษรและตัวเลขให้เป็นตัวเลขบริสุทธิ์

แม้ว่าสแนปชอตข้างบนนั้นชัดเจนในตัวเอง แต่ขั้นตอนดังต่อไปนี้:

  1. สารสกัดจากส่วนที่ตัวอักษรในคอลัมน์โดยใช้=LEFT(B4, 2)สูตรที่ '2' B4แสดงให้เห็นว่าจำนวนของตัวอักษรในสตริงและสตริงของฉันเริ่มต้นจาก

  2. กำหนดตัวเลขให้กับส่วนที่เป็นตัวอักษรนี้โดยใช้ =COLUMN(INDIRECT(E4&1))

  3. แยกส่วนที่เป็นตัวเลขของหมายเลขการลงทะเบียนโดยใช้=RIGHT(B4,2)เป็นสูตร ที่นี่ '2' คือหมายเลข ของตัวเลขในสตริง

  4. ต่อสองส่วนเข้าด้วยกันใน 2 และ 3

  5. แปลงให้เป็นตัวเลข 'บริสุทธิ์' โดยใช้ =VALUE(H4)

  6. คัดลอกคอลัมน์สุดท้ายไปยังตารางต้นฉบับและใช้ตัวเลือกวางเป็น 'ค่า'

    ข้อมูลเริ่มต้นต่อท้ายด้วยสตริงตัวอักษรและตัวเลขที่แปลงเป็นตัวเลข

  7. ตอนนี้จัดเรียงตามคอลัมน์สุดท้ายแล้วเลือก 'ขยายการเลือก'

    เรียงลำดับ 1

    จัดเรียง 2

  8. เสร็จสิ้น !!!

    ผลลัพธ์สุดท้าย

สำคัญ: Pro-Tip -> รวมขั้นตอนตั้งแต่ 1 ถึง 5 โดยใช้ =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))


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