Thep Excel

Text.PositionOfหาตำแหน่งข้อความ

หาตำแหน่งของข้อความย่อยในข้อความหลัก (0-indexed) โดยคืนค่า -1 หากไม่พบ

fx
=Text.PositionOf(text, substring, [occurrence], [comparer]) as any

ความนิยม6/10
ความยาก3/10
ประโยชน์6/10

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
text text ข้อความหลักที่ต้องการค้นหา
substring text ข้อความย่อยที่ต้องการหาตำแหน่ง
[occurrence]ไม่บังคับ number or Occurrence value Occurrence.First Occurrence.First (ค่าเริ่มต้น) = หาตำแหน่งแรก, Occurrence.Last = หาตำแหน่งสุดท้าย
[comparer]ไม่บังคับ function Comparer.Ordinal (case-sensitive) ฟังก์ชันสำหรับควบคุมการเปรียบเทียบ เช่น Comparer.Ordinal (case-sensitive), Comparer.OrdinalIgnoreCase (case-insensitive)

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

Text.PositionOf ใช้สำหรับหาตำแหน่งแรก (หรือการเกิดขึ้นที่ระบุ) ของข้อความย่อย (substring) ภายในข้อความหลัก นับตำแหน่งจากตัวอักษรตัวแรก (Index 0)

ที่เจ๋งคือ ฟังก์ชันนี้รองรับการค้นหาแบบ case-sensitive หรือ case-insensitive ผ่านพารามิเตอร์ comparer ซึ่งทำให้คุณควบคุมพฤติกรรมการเปรียบเทียบได้ละเอียด

ส่วนตัวผม มักใช้ Text.PositionOf ร่วมกับ Text.Range เพื่อแยก (extract) ส่วนของข้อความจากตำแหน่งที่หาได้ นั่นคือการรวมกำลังของสองฟังก์ชันเข้าด้วยกัน 😎

Examples

หาตำแหน่งแรกของข้อความText.PositionOf("Hello, World!", "o")

ตัว 'o' ปรากฏครั้งแรกที่ตำแหน่ง Index 4 (H=0, e=1, l=2, l=3, o=4)

fx
=Text.PositionOf("Hello, World!", "o")

ผลลัพธ์4
หาตำแหน่งเมื่อไม่พบข้อความText.PositionOf("Hello, World!", "xyz")

ไม่พบ 'xyz' ในข้อความจึงคืนค่า -1

fx
=Text.PositionOf("Hello, World!", "xyz")

ผลลัพธ์-1
หาตำแหน่งสุดท้าย (Occurrence.Last)let Text = "apple apple apple", Position = Text.PositionOf(Text, "apple", Occurrence.Last) in Position

หา "apple" ตัวสุดท้ายที่ตำแหน่ง 12 (ครั้งแรกที่ 0, ครั้งที่สองที่ 6, ครั้งที่สามที่ 12)

fx
let
Text = "apple apple apple",
Position = Text.PositionOf(Text, "apple", Occurrence.Last)
in
Position

ผลลัพธ์12
ค้นหา Case-Insensitivelet Text = "Hello World", Position = Text.PositionOf(Text, "HELLO", Occurrence.First, Comparer.OrdinalIgnoreCase) in Position

ค้นหา "HELLO" โดยไม่สนใจขนาดตัวอักษร พบที่ตำแหน่ง 0

fx
let
Text = "Hello World",
Position = Text.PositionOf(Text, "HELLO", Occurrence.First, Comparer.OrdinalIgnoreCase)
in
Position

รวมกับ Text.Range เพื่อแยกข้อความlet FullText = "Name: John Doe", DelimiterPos = Text.PositionOf(FullText, ": "), Name = Text.Range(FullText, DelimiterPos + 2) in Name

หาตำแหน่งของ ": " จากนั้นแยกข้อความหลังจากตัวคั่นออกมา

fx
let
FullText = "Name: John Doe",
DelimiterPos = Text.PositionOf(FullText, ": "),
Name = Text.Range(FullText, DelimiterPos + 2)
in
Name

ผลลัพธ์"John Doe"

FAQs

ความแตกต่างระหว่าง Text.PositionOf และ Text.Contains คืออะไร?+

Text.Contains เพียงแล้วบอกว่าข้อความย่อยอยู่ในข้อความหรือไม่ (true/false) ส่วน Text.PositionOf บอกตำแหน่งที่แน่นอน ถ้าไม่พบ Text.PositionOf คืนค่า -1

ทำไมการเรียกฟังก์ชันคืนค่า -1?+

ข้อความย่อยที่คุณค้นหาไม่พบในข้อความหลัก ลองตรวจสอบการสะกดและพิจารณาใช้ Comparer.OrdinalIgnoreCase หากต้องการค้นหาแบบไม่สนใจขนาดตัวอักษร

Index 0 หมายความว่าอะไร?+

Index 0 คือตำแหน่งของตัวอักษรตัวแรก ดังนั้น Index 0 = ตัวแรก, Index 1 = ตัวที่สอง เป็นต้น (0-indexed system)

ฉันต้องการหาตำแหน่งที่สอง ทำไงดี?+

ปัจจุบัน Text.PositionOf รองรับเฉพาะ Occurrence.First และ Occurrence.Last หากต้องการตำแหน่งที่สองให้ใช้ Text.PositionOfAny หรือสร้าง Custom Function ด้วย List.FindIndex

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Text.PositionOf จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Text.PositionOfText functions
Text functions (6)
Text.Contains

Text.Contains ใช้สำหรับตรวจสอบว่าข้อความที่กำหนด (text) มีข้อความย่อยที่ต้องการค้นหา (substring) อยู่ภายในหรือไม่ ส่งคืนค่า true หรือ false

Text.EndsWith

Text.EndsWith ตรวจสอบว่าข้อความหลักลงท้ายด้วยข้อความย่อย (substring) ที่กำหนดหรือไม่ คืนค่า true หากตรงกัน และ false หากไม่ตรงกัน สามารถใช้ Comparer เพื่อควบคุม Case Sensitivity

Text.Middle

Text.Middle ใช้สำหรับดึงข้อความตั้งแต่ตำแหน่งที่ระบุไปจำนวนอักขระที่กำหนด หากไม่ระบุจำนวนตัวอักษร จะดึงจากตำแหน่งเริ่มต้นไปถึงท้าย

Text.PositionOfAny

Text.PositionOfAny ใช้สำหรับค้นหาตำแหน่งแรกของอักขระใดๆ ในรายการที่ระบุ เป็นประโยชน์สำหรับการค้นหาเครื่องหมายพิเศษ สระ หรืออักขระที่ระบุ

Text.Range

Text.Range ใช้สำหรับดึงข้อความตั้งแต่ตำแหน่งที่ระบุไปยังท้ายสตริง หรือจำนวนอักขระที่กำหนด ถ้าจำนวนอักขระไม่พอ ฟังก์ชันจะคืนค่าเท่าที่หาได้

Text.StartsWith

Text.StartsWith ตรวจสอบว่าข้อความหลักขึ้นต้นด้วยข้อความย่อยที่กำหนดหรือไม่ โดยคืนค่า true หรือ false สามารถระบุ Comparer เพื่อเลือกว่าจะให้ตรวจสอบแบบ Case Sensitive (ไว) หรือ Case Insensitive (ไม่ไว) ได้

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่