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