FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้
=FIND(<FindText>, <WithinText>[, <StartNum>[, <NotFoundValue>]])
=FIND(<FindText>, <WithinText>[, <StartNum>[, <NotFoundValue>]])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| FindText | text | Yes | ข้อความที่ต้องการค้นหา | |
| WithinText | text | Yes | ข้อความหลักที่ต้องการค้นหาภายใน | |
| StartNum | number | Optional | 1 | ตำแหน่งเริ่มต้นในการค้นหา (เริ่มนับที่ 1) |
| NotFoundValue | number | Optional | error | ค่าที่ต้องการให้คืนเมื่อไม่พบ FindText (ถ้าไม่ระบุจะเกิด error) |
เช่น หา @ ในอีเมล หรือ – ในรหัสสินค้า
คืน 0/BLANK แทน error เมื่อไม่พบข้อความ
ใช้ร่วมกับ LEFT/MID/RIGHT เพื่อดึงบางส่วนของสตริง
ตำแหน่ง @ = FIND("@", Users[Email])ตำแหน่ง @ = FIND("@", Users[Email])
คืนเลขตำแหน่งเริ่มต้นของ @ (เช่น 5)
โดเมน = VAR atPos = FIND("@", Users[Email], 1, 0) RETURN IF( atPos = 0, BLANK(), RIGHT(Users[Email], LEN(Users[Email]) - atPos) )โดเมน =
VAR atPos = FIND("@", Users[Email], 1, 0)
RETURN
IF(
atPos = 0,
BLANK(),
RIGHT(Users[Email], LEN(Users[Email]) - atPos)
)
ได้ข้อความหลัง @ เช่น example.com
ตำแหน่ง - (ถัดไป) = FIND("-", Product[Code], 3, 0)=ตำแหน่ง - (ถัดไป) = FIND("-", Product[Code], 3, 0)
คืนตำแหน่งของ - ที่พบหลังตำแหน่งเริ่มต้น หรือคืน 0 ถ้าไม่พบ
FIND แยกตัวพิมพ์ใหญ่/เล็ก ส่วน SEARCH ไม่แยก และมักยืดหยุ่นกว่าในการค้นหา
ถ้าไม่ระบุ NotFoundValue จะเกิด error แต่ถ้าระบุ NotFoundValue (เช่น 0) จะคืนค่านั้นแทน ทำให้เขียนสูตรให้ปลอดภัยได้
FIND ใช้หาตำแหน่งเริ่มต้นของข้อความย่อย (substring) ภายในข้อความหลัก และคืนค่าเป็นเลขลำดับตำแหน่ง (เริ่มนับที่ 1) โดย FIND จะ แยกตัวพิมพ์ใหญ่/เล็ก และอาจไวต่อสำเนียง/เครื่องหมายกำกับบางภาษา
ถ้าต้องการค้นหาแบบไม่แยกตัวพิมพ์ใหญ่/เล็ก ให้ดู SEARCH แทน และถ้ากังวลเรื่อง “ไม่พบข้อความ” ให้กำหนด NotFoundValue เพื่อหลีกเลี่ยง error