Excel แยกสตริงย่อยจากสตริง


22

ฉันกำลังมองหาวิธีที่จะแยกสตริงย่อยความยาวตัวแปรจากสตริง

เซลล์ของฉันจะมีลักษณะดังนี้:

ABC - DEF
ABCDE - DEF
ABCD - ABC

ฉันต้องการแยกสตริงที่-ตัวละครดังนั้นเซลล์จะกลายเป็น:

ABC
ABCDE
ABCD

ควรทำด้วยสูตรและไม่ใช่ VBScript

ฉันใช้ Excel 2010

แก้ไข

ฉันพบว่าชุดข้อมูลไม่ได้มี-ตัวละครเสมอไปซึ่งหมายความว่าไม่ควรมีการเปลี่ยนแปลง

คำตอบ:


26

ปัญหานี้สามารถแบ่งออกเป็นสองขั้นตอน:

  1. ค้นหาดัชนีในสตริงของอักขระแยกที่คุณต้องการ (ในกรณีนี้"-"หรือ" - ")
  2. รับสตริงย่อยคำนำหน้าจากจุดเริ่มต้นของข้อความต้นฉบับไปยังดัชนีแยก

FINDและSEARCHคำสั่งแต่ละคนจะกลับดัชนีที่กำหนดneedleในhaystack( FINDเป็นกรณีที่มีความสำคัญSEARCHเป็นกรณีตายและช่วยให้สัญลักษณ์) ระบุว่าเรามี:

FIND(search_text, source_cell, start_index)

หรือในกรณีนี้:

FIND(" - ", A1, 1)

เมื่อเรามีดัชนีเราต้องมีคำนำหน้าของsource_cellการทำ "แยก" MIDทำแค่นั้น:

MID(source_cell, start_index, num_characters)

ทำให้พวกเขาทั้งสองเข้าด้วยกันเรามี:

=MID(A1,1,FIND(" - ",A1,1))

กับ A1 มีข้อความของให้ABC - DEFABC


7

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

เพื่อตรวจสอบค่าความผิดพลาดใด ๆ รวมถึง#VALUEเราใช้ISERRORฟังก์ชั่นดังนี้:

=ISERROR(FIND(" - ", A1, 1))

ซึ่งจะเป็นจริงหากFINDฟังก์ชันไม่สามารถค้นหาสตริง "-" ในเซลล์ A1 ดังนั้นเราใช้สิ่งนั้นเพื่อตัดสินใจว่าควรใช้ค่าใด:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

นั่นบอกว่าถ้าคำสั่ง find ส่งคืนข้อผิดพลาดให้ใช้เซลล์ A1 ที่ไม่ได้แก้ไข มิฉะนั้นให้ทำMIDฟังก์ชั่นที่ Andrew ได้จัดเตรียมไว้ให้


2

ขอบคุณ @AndrewColeson สำหรับคำตอบของคุณ

ดังนั้นถ้าคุณต้องการทุกอย่างทางด้านขวาของ-ใช้รหัสนี้:

= MID (A1, LEN (B1) + 3 LEN (A1))

ซึ่งเป็น:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

-รหัสนี้เป็นที่ดีสำหรับถ้าคุณมีไม่ได้กำหนดจำนวนของตัวละครหลังจากที่

ตัวอย่างเช่น

ถ้าคุณมี:

ABC - DEFG
AB - CDEFGH
...

นี่เป็นกลอุบาย=MID(a1,FIND("-",a1)+1,LEN(a1))โดยไม่มีการอ้างอิง "เซลล์ - พิเศษ" ใด ๆ )
Mikey

1

นี่เป็นวิธีที่ง่ายมากในการแยกอักขระที่ 5 จากด้านซ้ายจากสตริงข้อความใน Excel:

สมมติว่าสตริงอักขระABCDEFGHIJถูกเก็บไว้ในเซลล์ A1 ใน Excel Spreadsheet จากนั้นสูตรต่อไปนี้

=RIGHT(LEFT(A1,5),1)

ผลิตตัวละครที่ 5 Eจากซ้ายในสตริงคือ


(ไม่มีMIDฟังก์ชั่นใน Excel หรือไม่ฉันแน่ใจว่ามันมีอยู่ในมรดก Visual Basic และมันจะเป็นอะไรที่คล้ายกัน=MID(A1, 5, 1))
Valmiky Arquissandas

0

สูตรต่อไปนี้จะลบสตริงย่อยออก [TEXTCOLUMN_1]

เช่น: หากคุณต้องการแปลง-./thumb/hello.jpgให้thumb/hello.jpgใช้สูตรต่อไปนี้

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= ชื่อคอลัมน์ที่คุณต้องการเปลี่ยน [NUM_OF_CHARACTERS]= จำนวนตัวอักษรจากด้านซ้ายที่คุณต้องการลบ

หากคุณต้องการที่จะลบจากด้านขวาแล้วใช้ต่อไปนี้

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