---
title: FIND – หาตำแหน่งข้อความ (แบบแยกตัวพิมพ์ใหญ่/เล็ก)
url: https://www.thepexcel.com/functions/dax/text/find-dax/
type: function-explainer
program: DAX
syntax: "FIND(<FindText>, <WithinText>[, <StartNum>[, <NotFoundValue>]])"
date: 2025-12-13
updated: 2025-12-17
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# FIND – หาตำแหน่งข้อความ (แบบแยกตัวพิมพ์ใหญ่/เล็ก)

> หาตำแหน่งเริ่มต้นของข้อความย่อยในข้อความหลัก (case-sensitive)

## คำอธิบาย

FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้

## Syntax

```excel
FIND(&lt;FindText&gt;, &lt;WithinText&gt;[, &lt;StartNum&gt;[, &lt;NotFoundValue&gt;]])
```

**Variant**

```excel
FIND(&lt;FindText&gt;, &lt;WithinText&gt;)
```

ค้นหาจากตำแหน่งแรก และถ้าไม่พบจะเกิด error

**Variant**

```excel
FIND(&lt;FindText&gt;, &lt;WithinText&gt;, &lt;StartNum&gt;, &lt;NotFoundValue&gt;)
```

กำหนดจุดเริ่มค้นหาและค่าที่คืนเมื่อไม่พบ

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| FindText | Yes | text |  | ข้อความที่ต้องการค้นหา |
| WithinText | Yes | text |  | ข้อความหลักที่ต้องการค้นหาภายใน |
| StartNum | No | number | 1 | ตำแหน่งเริ่มต้นในการค้นหา (เริ่มนับที่ 1) |
| NotFoundValue | No | number | error | ค่าที่ต้องการให้คืนเมื่อไม่พบ FindText (ถ้าไม่ระบุจะเกิด error) |

## เคสการใช้งาน

### หาตำแหน่งตัวคั่นเพื่อแยกข้อความ

เช่น หา @ ในอีเมล หรือ - ในรหัสสินค้า

_เหมาะกับ:_ split-text

### ค้นหาแบบควบคุมกรณีไม่พบ

คืน 0/BLANK แทน error เมื่อไม่พบข้อความ

_เหมาะกับ:_ safe-find

### ทำความสะอาด/จัดรูปแบบข้อมูลข้อความ

ใช้ร่วมกับ LEFT/MID/RIGHT เพื่อดึงบางส่วนของสตริง

_เหมาะกับ:_ text-parsing

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: หาตำแหน่ง @ ในอีเมล

```excel
ตำแหน่ง @ = FIND("@", Users[Email])
```

**ผลลัพธ์:** `คืนเลขตำแหน่งเริ่มต้นของ @ (เช่น 5)`

FIND คืนตำแหน่งแบบเริ่มนับที่ 1 และแยกตัวพิมพ์ใหญ่/เล็ก

### 2. ตัวอย่างที่ 2: ดึงโดเมนจากอีเมล

```excel
โดเมน =
VAR atPos = FIND("@", Users[Email], 1, 0)
RETURN
IF(
    atPos = 0,
    BLANK(),
    RIGHT(Users[Email], LEN(Users[Email]) - atPos)
)
```

**ผลลัพธ์:** `ได้ข้อความหลัง @ เช่น example.com`

ใช้ NotFoundValue = 0 เพื่อป้องกัน error แล้วใช้ RIGHT+LEN เพื่อดึงข้อความหลัง @

### 3. ตัวอย่างที่ 3: ค้นหาจากตำแหน่งที่กำหนดและกำหนดค่าหากไม่พบ

```excel
ตำแหน่ง - (ถัดไป) = FIND("-", Product[Code], 3, 0)
```

**ผลลัพธ์:** `คืนตำแหน่งของ - ที่พบหลังตำแหน่งเริ่มต้น หรือคืน 0 ถ้าไม่พบ`

เหมาะเมื่อรหัสมีหลายตัวคั่นและคุณต้องการเริ่มค้นหาหลังจากตำแหน่งหนึ่ง

## หมายเหตุเพิ่มเติม

FIND คืนตำแหน่งเริ่มที่ 1 (ไม่ใช่ 0) และใช้ได้ดีเมื่อคุณต้องการตำแหน่งเพื่อไปแยกสตริงต่อด้วย LEFT/MID/RIGHT

## คำถามที่พบบ่อย

**Q: FIND ต่างจาก SEARCH อย่างไร?**

FIND แยกตัวพิมพ์ใหญ่/เล็ก ส่วน SEARCH ไม่แยก และมักยืดหยุ่นกว่าในการค้นหา

**Q: ถ้าไม่พบข้อความจะเกิดอะไรขึ้น?**

ถ้าไม่ระบุ NotFoundValue จะเกิด error แต่ถ้าระบุ NotFoundValue (เช่น 0) จะคืนค่านั้นแทน ทำให้เขียนสูตรให้ปลอดภัยได้

## ฟังก์ชันที่เกี่ยวข้อง

- [SEARCH – ค้นหาตำแหน่งข้อความ (ไม่สนตัวพิมพ์) ใน DAX](https://www.thepexcel.com/functions/dax/text/search-dax/)
- [LEN (DAX) – นับจำนวนอักขระในข้อความ](https://www.thepexcel.com/functions/dax/text/len-dax/)
- [LEFT – ตัดข้อความจากซ้าย (DAX)](https://www.thepexcel.com/functions/dax/text/left-dax/)
- [MID – ดึงข้อความจากตรงกลางตามตำแหน่งและจำนวนตัวอักษร](https://www.thepexcel.com/functions/dax/text/mid-dax/)
- [RIGHT – ตัดข้อความจากขวา (DAX)](https://www.thepexcel.com/functions/dax/text/right-dax/)
- [IF – ตรวจสอบเงื่อนไขและคืนค่าตามผลลัพธ์ TRUE/FALSE](https://www.thepexcel.com/functions/dax/logical/if-dax/)
- blank

## แหล่งข้อมูลเพิ่มเติม

- [DAX Guide: FIND](https://dax.guide/find/) _(documentation)_

---

_Source: [https://www.thepexcel.com/functions/dax/text/find-dax/](https://www.thepexcel.com/functions/dax/text/find-dax/)_
