สารบัญ
พยายามสร้างคำสั่ง IF ด้วยข้อความตัวแทน แต่ล้มเหลวทุกครั้งใช่หรือไม่ ปัญหาไม่ได้อยู่ที่สูตรของคุณ แต่อยู่ที่ตัวฟังก์ชัน - Excel IF ไม่รองรับอักขระตัวแทน อย่างไรก็ตาม มีวิธีการทำงานสำหรับการจับคู่ข้อความบางส่วน และบทช่วยสอนนี้จะสอนวิธีการให้คุณ
เมื่อใดก็ตามที่คุณต้องการทำการจับคู่บางส่วนหรือคลุมเครือใน Excel วิธีแก้ไขที่ชัดเจนที่สุดคือ เพื่อใช้สัญลักษณ์แทน แต่จะเป็นอย่างไรหากฟังก์ชันเฉพาะที่คุณต้องใช้ไม่รองรับอักขระตัวแทน น่าเศร้าที่ Excel IF เป็นหนึ่งในฟังก์ชันดังกล่าว สิ่งนี้น่าผิดหวังอย่างยิ่งเมื่อพิจารณาว่าฟังก์ชัน "เงื่อนไข" อื่นๆ เช่น COUNTIF, SUMIF และ AVERAGEIFS ทำงานร่วมกับสัญลักษณ์แทนได้อย่างสมบูรณ์แบบ
โชคดีที่ไม่ใช่อุปสรรคที่สามารถหยุดผู้ใช้ Excel ที่สร้างสรรค์ได้ :) ด้วยการรวม IF ด้วยฟังก์ชันอื่นๆ คุณสามารถบังคับให้ประเมินการจับคู่บางส่วนและรับทางเลือกที่ดีสำหรับสูตรสัญลักษณ์ตัวแทน IF ของ Excel
เหตุใดฟังก์ชัน Excel IF ที่มีสัญลักษณ์ตัวแทนไม่ทำงาน
ในตารางตัวอย่างด้านล่าง สมมติว่าคุณต้องการตรวจสอบว่า ID ในคอลัมน์แรกมีตัวอักษร "A" หรือไม่ หากพบ - แสดง "ใช่" ในคอลัมน์ B หากไม่พบ - แสดง "ไม่ใช่"
ดูเหมือนว่าการรวมข้อความตัวแทนในการทดสอบตรรกะจะเป็นวิธีแก้ปัญหาที่ง่าย:
=IF(A2="*a*","Yes", "No")
แต่น่าเสียดายที่มันไม่ได้ผล สูตรจะส่งกลับ "ไม่" สำหรับเซลล์ทั้งหมด แม้แต่เซลล์ที่มี "A":
ทำไมคำสั่ง IF wildcard ล้มเหลว? จากลักษณะที่ปรากฏทั้งหมด Excel ไม่รู้จักสัญลักษณ์ตัวแทนที่ใช้กับเครื่องหมายเท่ากับหรือตัวดำเนินการทางตรรกะอื่นๆ เมื่อดูรายการฟังก์ชันที่รองรับไวด์การ์ดอย่างละเอียด คุณจะสังเกตเห็นว่าไวยากรณ์ของฟังก์ชันถือว่าข้อความไวด์การ์ดปรากฏขึ้นโดยตรงในอาร์กิวเมนต์ดังนี้:
=COUNTIF(A2:A10, "*a*")
Excel IF มีข้อความบางส่วน
ตอนนี้คุณทราบสาเหตุที่สูตร wildcard IF ล้มเหลวแล้ว มาลองหาวิธีทำให้สูตรทำงานกัน สำหรับสิ่งนี้ เราจะฝังฟังก์ชันที่ยอมรับไวด์การ์ดในการทดสอบตรรกะของ IF ซึ่งก็คือฟังก์ชัน COUNTIF:
IF(COUNTIF( cell, "* text* "), value_if_true, value_if_false)ด้วยวิธีนี้ IF ไม่มีปัญหาในการทำความเข้าใจไวลด์การ์ดและระบุเซลล์ที่มี "A" หรือ "a" ได้อย่างไร้ที่ติ (เนื่องจาก COUNTIF ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่):
=IF(COUNTIF(A2, "*a*"),"Yes", "No")
สูตรนี้ไปที่ B2 หรือเซลล์อื่นๆ ในแถวที่ 2 จากนั้นคุณสามารถลากลงไปได้มากเท่าที่ต้องการ:
วิธีนี้สามารถใช้เพื่อค้นหา สตริงของรูปแบบเฉพาะ สมมติว่าเฉพาะ ID ที่ประกอบด้วย 2 กลุ่ม 2 อักขระที่คั่นด้วยยัติภังค์เท่านั้นที่ใช้ได้ คุณสามารถใช้ "??-???" สตริงอักขระตัวแทนเพื่อระบุ:
=IF(COUNTIF(A2, "??-??"), "Valid", "")
สูตรนี้ทำงานอย่างไร:
สำหรับการทดสอบเชิงตรรกะของ IF เราใช้ฟังก์ชัน COUNTIF ที่นับจำนวนเซลล์ที่ตรงกับอักขระตัวแทนที่ระบุสตริง เนื่องจากช่วงเกณฑ์เป็นเซลล์เดียว (A2) ผลลัพธ์จึงเป็น 1 เสมอ (พบรายการที่ตรงกัน) หรือ 0 (ไม่พบรายการที่ตรงกัน) เนื่องจาก 1 เท่ากับ TRUE และ 0 เป็น FALSE สูตรจึงคืนค่า "Valid" (value_if_true) เมื่อจำนวนเท่ากับ 1 และสตริงว่าง (value_if_false) เมื่อจำนวนเท่ากับ 0
IF ISNUMBER SEARCH สูตรสำหรับบางส่วน ตรงกัน
อีกวิธีหนึ่งในการบังคับให้ Excel IF ทำงานสำหรับการจับคู่ข้อความบางส่วนคือการรวมฟังก์ชัน FIND หรือ SEARCH ในการทดสอบเชิงตรรกะ ข้อแตกต่างคือ FIND คำนึงถึงตัวพิมพ์เล็กและใหญ่ในขณะที่ SEARCH ไม่เป็นเช่นนั้น
ดังนั้น ขึ้นอยู่กับว่าคุณต้องการถือว่าตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เป็นอักขระตัวเดียวกันหรือต่างกัน สูตรใดสูตรหนึ่งเหล่านี้จะใช้ได้ผล:<3
ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ สูตรสำหรับการจับคู่บางส่วน:
IF(ISNUMBER(SEARCH(" text ", cell )), value_if_true, value_if_false )ตรงตามตัวพิมพ์เล็กและใหญ่ สูตรสำหรับการจับคู่บางส่วน:
IF(ISNUMBER(FIND(" text ", cell )), value_if_true, value_if_false )เนื่องจากทั้งสองฟังก์ชันได้รับการออกแบบมาเพื่อดำเนินการจับคู่ประเภท "เซลล์มี" จึงไม่จำเป็นต้องใช้สัญลักษณ์แทนในกรณีนี้
ตัวอย่างเช่น เพื่อตรวจหารหัสที่มี "A" หรือ "a" สูตรคือ:
=IF(ISNUMBER(SEARCH("A", A2)), "Yes", "No")
หากต้องการค้นหาเฉพาะตัวพิมพ์ใหญ่ "A" และละเว้น "a" สูตรคือ:
=IF(ISNUMBER(FIND("A", A2)), "Yes", "No")
ใน B6 ในภาพหน้าจอด้านล่าง คุณสามารถสังเกตความแตกต่างในผลลัพธ์:
วิธีการทำงานของสูตรนี้:
ที่ หัวใจของสูตร มีการรวมกันของ ISNUMBER และ SEARCH (หรือ FIND):
ISNUMBER(SEARCH("A", A2))
ฟังก์ชัน SEARCH จะค้นหาข้อความที่ระบุ ("A" ในตัวอย่างนี้) และส่งกลับตำแหน่งภายใน สตริงใน A2 หากไม่พบข้อความ ระบบจะส่งกลับข้อผิดพลาด #VALUE เนื่องจากทั้ง SEARCH และ FIND ได้รับการออกแบบมาให้จับคู่ประเภท "เซลล์มี" ในกรณีนี้ ไวลด์การ์ดจึงไม่จำเป็นต้องใช้จริงๆ
ฟังก์ชัน ISNUMBER แปลงตัวเลขเป็น TRUE และค่าอื่นๆ รวมถึงข้อผิดพลาดเป็น FALSE . ค่าตรรกะไปที่การทดสอบตรรกะของ IF โดยตรง ในกรณีของเรา A2 มี "A" ดังนั้น ISNUMBER จึงส่งกลับ TRUE:
IF(TRUE, "Yes", "No")
ตามผลลัพธ์ IF จึงส่งกลับค่าที่ตั้งไว้สำหรับอาร์กิวเมนต์ value_if_true ซึ่งก็คือ "ใช่"
คำสั่ง Excel IF OR ที่มีไวด์การ์ด
จำเป็นต้องระบุเซลล์ที่มีหนึ่งในสตริงข้อความไวด์การ์ดหรือไม่ ในกรณีนี้ คุณสามารถรวมคำสั่ง IF OR แบบคลาสสิกเข้ากับสูตร COUNTIF หรือ ISNUMBER SEARCH ที่กล่าวถึงข้างต้น
ตัวอย่างเช่น หากต้องการค้นหา "aa" OR "bb" ใน A2 โดยไม่สนใจตัวอักษรตัวพิมพ์ใหญ่และส่งคืน " ใช่" หากพบอย่างใดอย่างหนึ่ง ให้ใช้สูตรใดสูตรหนึ่งต่อไปนี้:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
หรือ
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Yes", "")
การเพิ่มฟังก์ชัน COUNTIF สองฟังก์ชันจะใช้ได้เช่นกัน ในกรณีนี้ เครื่องหมายบวกจะทำงานเหมือนตัวดำเนินการ OR:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Yes", "")
แทนที่จะใช้สตริงอักขระตัวแทนฮาร์ดโค้ดในสูตร คุณสามารถป้อนสตริงเหล่านี้ในเซลล์แยกกัน เช่น D2 และ F2 ดังที่แสดง ในภาพหน้าจอด้านล่าง โปรดสังเกตสิ่งเหล่านี้การอ้างอิงเซลล์ถูกล็อกด้วยเครื่องหมาย $ เพื่อให้สูตรคัดลอกไปยังเซลล์ด้านล่างได้อย่างถูกต้อง:
=IF(OR(COUNTIF(A2, "*"&$D$2&"*"), COUNTIF(A2, "*"&$F$2&"*")), "Yes", "")
สูตรด้านบนใช้ได้ดีกับ 2 ส่วนที่ตรงกันบางส่วน แต่ถ้าคุณกำลังค้นหาตั้งแต่ 3 รายการขึ้นไป รายการเหล่านั้นจะยาวเกินไป ในกรณีนี้ มีเหตุผลที่จะเข้าหางานด้วยวิธีอื่น:
ป้อนสตริงย่อยหลายรายการให้กับฟังก์ชัน SEARCH ในค่าคงที่อาร์เรย์ นับจำนวนที่ส่งคืน และตรวจสอบว่าผลลัพธ์มีค่ามากกว่าศูนย์หรือไม่ (ซึ่งจะหมายความว่า อย่างน้อยหนึ่งสตริงย่อยหากพบ):
=IF(COUNT(SEARCH({"aa","bb"}, A2))>0, "Yes", "")
วิธีนี้ คุณจะได้ผลลัพธ์เดียวกันทุกประการด้วยสูตรที่กระชับมากขึ้น:
สูตร Excel IF AND ที่มีสัญลักษณ์แทน
เมื่อคุณต้องการตรวจสอบว่าเซลล์มีสตริงย่อยที่แตกต่างกันตั้งแต่ 2 รายการขึ้นไปหรือไม่ วิธีที่ง่ายที่สุดคือการใช้ฟังก์ชัน COUNTIFS ที่มีสัญลักษณ์แทนสำหรับการทดสอบเชิงตรรกะ
สมมติว่าคุณต้องการค้นหาเซลล์ในคอลัมน์ A ที่มีทั้ง "b" และ "2" หากต้องการดำเนินการ ให้ใช้ "*b*" และ "*2*" สำหรับเกณฑ์ของ COUNTIFS และ A2 สำหรับช่วงเกณฑ์:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")
อีกวิธีหนึ่งคือการใช้สูตร IF AND ร่วมกัน ด้วย ISNUMBER SEARCH:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
แม้ว่าเราจะไม่รวมอักขระตัวแทนใดๆ ในสูตรนี้ แต่ก็ทำงานเหมือนกับการค้นหาสตริงอักขระตัวแทนสองชุด ("*b*" และ "*2*" ) ในเซลล์เดียวกัน
แน่นอนว่าไม่มีอะไรขัดขวางไม่ให้คุณป้อนค่าการค้นหาในเซลล์ที่กำหนดไว้ล่วงหน้า D2 และ F2 ในกรณีของเรา และจัดหาเซลล์อ้างอิงถึงสูตร:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
หากคุณต้องการใช้สูตรที่กระชับมากขึ้นหากเป็นไปได้ คุณอาจชอบวิธีค่าคงที่ของอาร์เรย์มากกว่า สูตร IF COUNT SEARCH เหมือนกับในตัวอย่างก่อนหน้านี้ แต่เนื่องจากเวลานี้สตริงย่อยทั้งสองต้องปรากฏใน A2 เราจึงตรวจสอบว่าการนับเท่ากับ 2 หรือไม่:
=IF(COUNT(SEARCH({"b","2"}, A2))=2, "Yes", "")
ต่อไปนี้เป็นวิธีการหลักในการใช้สัญลักษณ์แทนในคำสั่ง IF ใน Excel หากคุณทราบวิธีแก้ปัญหาอื่น ๆ ผู้ใช้รายอื่นจะประทับใจอย่างแน่นอนหากคุณแบ่งปันประสบการณ์ของคุณในความคิดเห็น ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
สมุดงานแบบฝึกหัดสำหรับการดาวน์โหลด
ตัวอย่างสูตรสัญลักษณ์ตัวแทนของ Excel IF (ไฟล์ .xlsx)