Thep Excel

SUBSTITUTEWITHINDEX – แทนคอลัมน์ร่วมด้วยดัชนี (0-based) เพื่อทำ mapping

คืนตารางที่เป็นผลแบบ semi-join ระหว่าง 2 ตาราง พร้อมแทนคอลัมน์ร่วมด้วยดัชนี 0-based ซึ่งคำนวณจากลำดับแถวของตารางอ้างอิงหลังจัดเรียง

=SUBSTITUTEWITHINDEX(<Table>, <Name>, <SemiJoinIndexTable>, <Expression> [, [<Order>] [, <Expression> [, [<Order>]]]])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
2/10

Difficulty
5/10

Usefulness
2/10

Syntax & Arguments

=SUBSTITUTEWITHINDEX(<Table>, <Name>, <SemiJoinIndexTable>, <Expression> [, [<Order>] [, <Expression> [, [<Order>]]]])

Argument Type Required Default Description
Table table Yes ตารางหลักที่ต้องการปรับ โดยจะถูกคืนกลับมาในรูปแบบตารางผลลัพธ์
Name string Yes ชื่อคอลัมน์ดัชนีใหม่ที่จะถูกเพิ่มลงในผลลัพธ์
SemiJoinIndexTable table Yes ตารางอ้างอิงสำหรับสร้างดัชนีและใช้จับคู่กับ Table (หลังจัดเรียงตาม Expression/Order ที่ระบุ)
Expression expression Yes นิพจน์สำหรับ “จัดลำดับ” ตารางอ้างอิง (SemiJoinIndexTable); สามารถระบุได้หลายตัว
Order keyword Optional ASC ทิศทางการจัดเรียงของแต่ละ Expression เช่น ASC หรือ DESC

How it works

ทำ mapping ค่าไปยังแกนคอลัมน์ใน matrix/visual

ใช้สร้าง “หมายเลขคอลัมน์” จากรายการหัวคอลัมน์ที่จัดลำดับแล้ว เพื่อวางค่าลงตำแหน่งที่ถูกต้อง

แทนคีย์หลายคอลัมน์ด้วยดัชนีเพื่อทำงานต่อ

เมื่อมีคอลัมน์ร่วมหลายตัว การสร้างดัชนีช่วยให้การจัดรูปตาราง/ส่งต่อข้อมูลทำได้ง่ายขึ้น

Examples

ตัวอย่างที่ 1: แนวคิดสร้างคอลัมน์ดัชนีจากตารางอ้างอิง
แนวคิด (โครง) = SUBSTITUTEWITHINDEX( <ResultTable>, "ColIndex", <IndexTable>, <SortExpression>, ASC )
จุดสำคัญคือ IndexTable ต้องเป็นชุดค่าที่กำหนดลำดับไว้ชัดเจน แล้วจึงนำไปแทนคอลัมน์ร่วมด้วยดัชนี
DAX Formula:

=แนวคิด (โครง) =
SUBSTITUTEWITHINDEX(
    <ResultTable>,
    "ColIndex",
    <IndexTable>,
    <SortExpression>,
    ASC
)

Result:

ได้ตารางที่มีคอลัมน์ "ColIndex" เป็นเลข 0,1,2,... ตามลำดับของตารางอ้างอิง

ตัวอย่างที่ 2: ใช้ร่วมกับ SUMMARIZECOLUMNS เพื่อเตรียม ResultTable (แนวคิด)
R (แนวคิด) = SUMMARIZECOLUMNS( 'Product'[แบรนด์], 'Date'[ปี], "Amount", [Sales Amount] ) Result (แนวคิด) = SUBSTITUTEWITHINDEX( R, "ColIndex", <IndexTable…
มักใช้ในงาน mapping ค่าไปวางตามลำดับหัวคอลัมน์ที่กำหนด
DAX Formula:

=R (แนวคิด) =
SUMMARIZECOLUMNS(
    'Product'[แบรนด์],
    'Date'[ปี],
    "Amount", [Sales Amount]
)

Result (แนวคิด) =
SUBSTITUTEWITHINDEX(
    R,
    "ColIndex",
    <IndexTable>,
    'Date'[ปี],
    ASC
)

Result:

สร้างตารางผลรวมแล้วแทนคอลัมน์ปีด้วยดัชนีตามลำดับปี

ตัวอย่างที่ 3: ระวังเรื่อง data lineage/ชื่อคอลัมน์
แนวคิด: ถ้าตารางอ้างอิงมีคอลัมน์ชื่อชนกับคอลัมน์ที่มี lineage อาจเกิดข้อผิดพลาด ให้พิจารณาใช้ SELECTCOLUMNS เพื่อสร้างคอลัมน์ใหม่จากนิพจน์แทน
ในงานจริงมักต้องจัดรูปคอลัมน์ให้ชัดเจนก่อนทำการจับคู่/แทนดัชนี
DAX Formula:

=แนวคิด: ถ้าตารางอ้างอิงมีคอลัมน์ชื่อชนกับคอลัมน์ที่มี lineage อาจเกิดข้อผิดพลาด
ให้พิจารณาใช้ SELECTCOLUMNS เพื่อสร้างคอลัมน์ใหม่จากนิพจน์แทน

Result:

ลดโอกาสชนกันของ metadata ทำให้จับคู่ได้ตามที่ต้องการ

FAQs

SUBSTITUTEWITHINDEX เริ่มดัชนีที่เลขอะไร?

เริ่มที่ 0 (0-based index) เช่น 0, 1, 2, …

ฟังก์ชันนี้เหมาะกับการเขียน measure ทั่วไปไหม?

โดยมากเป็นฟังก์ชันเชิงเครื่องมือที่ใช้ในงานจัดรูปผลลัพธ์/การทำงานภายในมากกว่างานโมเดลปกติ แต่สามารถใช้ได้ถ้าเข้าใจโครงสร้างข้อมูลและการจับคู่คอลัมน์

Resources & Related

Additional Notes

SUBSTITUTEWITHINDEX เป็นฟังก์ชันเชิงเครื่องมือที่คืน “ตารางผลลัพธ์แบบจับคู่บางส่วน (semi-join)” ระหว่าง 2 ตาราง โดยคอลัมน์ที่ใช้จับคู่ร่วมกันจะถูกแทนด้วยคอลัมน์ดัชนีแบบ 0-based (เริ่มจาก 0) ตามลำดับแถวของตารางอ้างอิงที่ถูกจัดเรียงตามนิพจน์ที่กำหนด ฟังก์ชันนี้พบได้บ่อยในงานที่ต้องทำ mapping ค่าจากคิวรีไปวางในแกนคอลัมน์ของ visual (เช่น matrix)

Leave a Reply

Your email address will not be published. Required fields are marked *