ฉันจะจับคู่สตริงบางส่วนในเซลล์กับรายการ Excel 2013 ได้อย่างไร


1

ฉันมีข้อมูลต่อไปนี้ในเซลล์

| John Smith 34, Manager  | 
| Jane Doe 25, Assistant  |
| Lucio 32, Web Developer |

ฉันยังมีรายการอื่นที่มีรายชื่อ

| Lucio            |
| John Smith       |
| Jane Doe         |
| Samuel L Jackson |

[แก้ไขเพื่อชี้แจงคำถาม]

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

ฉันจะทำสิ่งนี้ใน excel 2013 ได้อย่างไร

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

คำตอบ:


0

จากสิ่งที่คุณอธิบายวิธีที่ง่ายที่สุดในการทำสิ่งที่คุณขอคือการเขียนแมโคร VBA เป็นสูตร แต่คำถามของคุณคลุมเครือเกินไป ตัวอย่างเช่นคุณต้องบอกว่ารายการแรกมีชื่อที่ไม่อยู่ในรายการที่สอง หากรายการที่สองมีชื่อที่ไม่อยู่ในรายการแรก ในรายการตัวอย่างของคุณ 1 ของรายการแรกจับคู่รายการที่ 1 ของรายการที่สองและอื่น ๆ สำหรับรายการที่ 2 และ 3 คุณเพิ่งจับคู่กับแถวที่เกี่ยวข้องในรายการที่สองหรือเทียบกับรายการทั้งหมดหรือไม่ ฉันสามารถตั้งสมมติฐานได้ แต่หวังว่าคุณจะได้สิ่งที่ฉันพูดเมื่อฉันพูดว่าคำถามของคุณคลุมเครือเกินไป


0

สิ่งนี้อาจใช้ได้ผลสำหรับคุณ

หากรายการแรกของคุณอยู่ใน A1: A3 และรายการที่สองของคุณอยู่ใน D1: D3 ให้ป้อนรายการนี้ในเซลล์ E1:

=IFERROR(IF(MATCH(D1,LEFT($A$1:$A$3,LEN(D1)),0)>0,1,0),0)

ใช้ CTRL + Shift + Enter เพื่อทำให้เป็นสูตรอาร์เรย์ จากนั้นคัดลอกและวาง

ฉันตรวจสอบด้วยค่าที่ไม่ดีในเซลล์พิเศษD4=Donaldและมันจะคืนค่า 0 หากไม่มีการจับคู่ที่แน่นอน

แก้ไข:

ฉันอาจจะอธิบายว่าวิธีสูตรนี้จะทำงานได้ก็คือว่ามันจะใช้เวลารายการเดิมและตัดมันลงไปจำนวนตัวอักษรที่อยู่ในเซลล์ที่เราต้องการจะตรวจสอบกับA1:A3D1

LEFT($A$1:$A$3,LEN(D1))จะกลับมากับอาร์เรย์ของ 3 ค่านิยม:

{"John Smith";"Jane Doe 2";"Lucio 32, "}.

จากรายการนี้เรากำลังมองหาJohn Smithและตรง (กรณีตาย) 1และตั้งแต่มีเพียงคนเดียวก็จะส่งกลับ

ในD2ตัวอย่างเช่นอาร์เรย์ผลลัพธ์ของค่าใหม่ที่จะตรวจสอบคือ:

{"John Smi";"Jane Doe";"Lucio 32"}

เนื่องจากเรากำลังมองหาJane Doeจึงมีการจับคู่หนึ่งรายการที่เหมาะกับการค้นหาและ1จะถูกส่งกลับ


0

หากNameListอ้างถึงช่วง (เช่น: $ J $ 8: $ J $ 10) ที่มีรายชื่อของคุณ:

สูตรนี้จะต้องใส่อาร์เรย์ :

=COUNT(FIND(NameList,A1))

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


0

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

| John Smith 34, Manager  | John Smith |
| Jane Doe 25, Assistant  | Jane Doe   |
| Lucio 32, Web Developer | Lucio      |

ผมใช้วิธีการที่จะหลีกเลี่ยงมากเกินไปsubstitute() iferror()คุณสามารถเปรียบเทียบความยาวของข้อความหัวเรื่อง ("กองหญ้า") เทียบกับความยาวของกองหญ้าโดยแทนที่สตริงการค้นหา ("เข็ม")

= LEN(haystack) - LEN( SUBSTITUTE(haystack, needle, "") ) > 0

  // Analysis of a matching example

  - LEN("John Smith 34, Manager") = 22
  - SUBSTITUTE("John Smith 34, Manager", "John Smith", "") = " 34, Manager"
  - LEN(" 34, Manager") = 10
  - (22 - 10) > 0 = TRUE

  // Analysis of a non-matching example

  - LEN("John Smith 34, Manager") = 22
  - SUBSTITUTE("John Smith 34, Manager", "Lucio", "") = "John Smith 34, Manager"
  - LEN("John Smith 34, Manager") = 22
  - (22 - 22) > 0 = FALSE

=LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))>0ในตัวอย่างข้างต้นคุณก็จะใช้ นอกจากนี้โปรดทราบว่าคุณสามารถทำการเปรียบเทียบแบบตัวเล็กและตัวพิมพ์เล็กผ่านได้SUBSTITUTE(UPPER(haystack), UPPER(needle), "")

ฉันชอบวิธีนี้มากกว่าiferror(find(needle, haystack)>0,false)เพราะการจัดการข้อผิดพลาดมีอยู่แล้ว - มากกว่าปรัชญาที่ว่าการจัดการข้อผิดพลาดควรทำในระดับมาโครแทนที่จะเป็นสูตร

นอกจากนี้หากคุณต้องการเอาต์พุตไบนารี่ ( 0, 1) เทียบกับเอาท์พุทบูลีน ( TRUE, FALSE) คุณสามารถรวมฟังก์ชันของคุณในINT()(เช่นINT(TRUE)= 1, INT(FALSE)= 0)

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