ThepExcel Logo
  • บทความ
    • Excel
      • Excel ทั่วไป
      • Excel Pivot Table
      • Excel Power Pivot
      • Power Query
      • Excel Array Formula
      • Excel VBA
      • Excel for Business
      • Excel and Maths
      • ฟังก์ชัน Excel ทั้งหมด
    • Power BI
      • Power Query
      • Data Model
      • DAX Formula
      • Power BI Report
    • Coding
      • Excel VBA
      • Python
      • Power Query M Code
    • AI
      • ChatGPT
      • Stable Diffusion
      • MidJourney
    • Highlights : บทความแนะนำ
    • คลิปวีดีโอ
  • อบรม
    • อบรมลูกค้าองค์กร
    • คอร์สออนไลน์ SkillLane
    • แนะนำวิทยากร
    • Excel/Power BI Skill Map
    • Quiz
  • Shop
    • คอร์สออนไลน์
    • สินค้าทั้งหมด
    • หนังสือเล่ม
    • E-Book
    • Cart
  • Download
    • Download ไฟล์จากเทพเอ็กเซล
    • ThepExcel-Mfx : M Code สำเร็จรูป
    • Date Table สำเร็จรูป
    • กราฟ My Skill
    • github.com/ThepExcel
  • รวม Link
    • รวม Link สอน Excel & Power BI ทั้งไทยและเทศ
    • รวม Link เกี่ยวกับ AI
    • รวม Link Coding
    • หนังสือแนะนำ
    • Facebook ThepExcel
    • YouTube ThepExcel
    • DAX Formatter
  • Contact
    • แนะนำ เทพเอ็กเซล (Thep Excel)
    • แนะนำวิทยากร : อาจารย์ ศิระ เอกบุตร (ระ)
    • นโยบายการคุ้มครองข้อมูลส่วนบุคคล (Privacy Policy)
  • Facebook
  • YouTube

คัมภีร์สรุป M Code ใน Power Query ตอนที่ 1

power query m code language

Categories 📂

Excel Power Up Content, Highlights : บทความแนะนำ, M Code

Tags 🏷️

m code

ซีรีส์นี้จะเป็นการเอาเนื้อหา M Code Language ของ Power Query บางส่วนในหนังสือ Excel Power Up และการเรียนรู้เพิ่มเติมของผมหลังจากนั้นมาผสมผสานกัน เนื้อหาจึงมีทั้งส่วนที่เหมือนและแตกต่างกับในหนังสือด้วยนะครับ อีกอย่างในหนังสืออาจ Copy Code ลำบาก ผมเลยเขียนเป็นบทความไว้ให้เลยดีกว่า จะได้ลอง Copy Paste สูตรไปเล่นได้ง่ายๆ ด้วย

เอาเป็นว่าใครอยากจะลงลึกเรื่อง M Code ก็อ่านซีรีส์นี้ได้เลย เพราะผมอยากให้มีคนไทยใช้เครื่องมือนี้เป็นเยอะๆ ครับ อีกอย่างมันใช้ได้ทั้งใน Excel และ Power BI เลย จึงมีประโยชน์มากๆ

และที่สำคัญ ในซีรีส์นี้ผมจะมาอัปเดทเนื้อหาเพิ่มให้เรื่อยๆ ด้วยนะ ติดตามไปกันได้ยาวๆ เลยครับ

สารบัญ

  • M Language คืออะไร?
  • Let Expression
  • Variable และ Expression
    • Variable (ชื่อตัวแปร)
    • Expression (สูตร)
    •  ประเภทของ Value (ผลลัพธ์)
    • Operator ต่างๆ ที่ใช้บ่อยๆ
  • เรื่องที่ควรรู้ของ M Code
    • Comment
    • Code จะเรียงยังไงก็ได้!!
    • Return ค่าอะไรออกมาก็ได้
    • let in ซ้อน let in ได้อีก
    • ค่า Value ที่เป็น Output ของ Expression
  • Structured Values : ข้อมูลที่ประกอบกันเป็นโครงสร้าง
    • List : รายการข้อมูล
    • Record : เป็นกลุ่มของ Field
    • Table : ตาราง
  • การ Convert ประเภทข้อมูลที่ใช้บ่อย
  • สารบัญซีรีส์ M Code
  • แหล่งอ้างอิง M Code เจ๋งๆ
    • Website
    • YouTube

M Language คืออะไร?

M Language เป็นภาษาในรูปแบบฟังก์ชัน (Functional Language ตรงข้ามกับอีก concept คือ Object-oriented Programming) ที่ออกแบบมาเพื่อจัดการและดัดแปลงข้อมูลซึ่งเป็นภาษาของ Power Query โดยเฉพาะ ซึ่งปกติเราจะใช้เครื่องมือมาตรฐานใน Power Query Editor สร้าง M Code ออกมาให้เรา แล้วเราค่อยดัดแปลงมันอีกที แต่มาถึงตอนนี้ เราจะมาทำความเข้าใจ M Code ให้ลึกซึ้งมากขึ้นเพื่อที่ให้สามารถใช้มันจัดการปัญหาที่ซับซ้อนมากขึ้นได้ โดยเฉพาะการเขียน Custom Function ที่ทรงพลังมากๆ

เราจะค่อยๆ ทำความเข้าใจทีละส่วน เริ่มจากพื้นฐานกันครับ

ก่อนอื่นคงต้องทบทวนความจำซักนิดนะครับ ว่า M Language เป็นภาษาที่สนใจเรื่องตัวพิมพ์เล็กพิมพ์ใหญ่ หรือที่เรียกว่า่ Case Sensitive พูดง่ายๆ คือ ถ้าเขียนชื่อฟังก์ชันอะไรผิดแค่เรื่องตัวพิมพ์เล็กพิมพ์ใหญ่ มันก็จะ Error ทันทีเลย (แม้แต่คำว่า let กับ in ก็ต้องตัวพิมพ์เล็กให้ถูกต้อง)

Tips : เพื่อให้การเขียน Code ของเราสะดวกสบายที่สุด ผมแนะนำว่าให้คุณฝึกใน Excel365 หรือ Power BI ครับ เพราะมันจะมี Intellisence มาช่วย Guide การเขียนให้เราด้วย

Let Expression

เวลาเราใช้เครื่องมือมาตรฐานสั่งคำสั่งต่างๆ มันจะมีคำว่า let … in… โผล่มาโดยอัตโนมัติ ในรูปแบบ คือ

let
	ชื่อตัวแปร1=expression1(สูตร),
	ชื่อตัวแปร2=expression2(สูตร),
	ชื่อตัวแปร3=expression3(สูตร)
in
	ชื่อตัวแปรที่ต้องการแสดงผลลัพธ์

ยกตัวอย่างเช่น

let
	Step1=1+2,
	Step2=Step1*2
in
	Step2
//แบบนี้ผลลัพธ์จะได้ 6

ภายใน Let คือ การตั้งชื่อตัวแปรให้สูตร (Expression) โดยที่เราสามารถตั้งชื่อตัวแปร (Variable) กี่ตัวก็ได้ตามต้องการ โดยคั่นด้วยเครื่องหมาย comma เช่นในตัวข้างบน จริงๆ ก็คือเขียนในบรรทัดเดียวกันก็ได้แบบนี้ (และนี่คือสาเหตุว่าทำไมหลัง let ตัวสุดท้ายไม่มี comma เพราะมันใช้คั่นการตั้งชื่อตัวแปร)

let   ตัวแปร1=สูตร1,   ตัวแปร2=สูตร2,   ตัวแปร3=สูตร3

และชื่อตัวแปรแต่ละอันก็จะไปโผล่เป็นชื่อ Step ใน Power Query Editor ด้วยนะ

หลัง in คือ สิ่งที่มันจะทำการคำนวณเพื่อแสดงเป็นผลลัพธ์ เวลามันทำงานมันจะดูว่า “หลัง in เราต้องการผลลัพธ์อะไร” มันจะดูเองว่าจะเอาค่ามาจากไหน

  • ในตัวอย่างข้างบน มันจะรู้ว่าเราต้องการค่าในตัวแปร Step2
  • มันก็จะไปดูว่า Step2 ต้องใช้ค่าจากตัวแปร Step1 ไปคูณ2
  • จากนั้นมันก็จะไปดูว่า Step1 เกิดจากเอาค่า 1+2 ได้ 3
  • แล้ว Step2 จะเอา 3*2 ได้ 6

Variable และ Expression

จากในรูปแบบของ M Code จะพบว่า

  • สิ่งที่พิมพ์อยู่ก่อนเครื่องหมาย = คือ Variable หรือ ชื่อตัวแปร
  • สิ่งที่เราพิมพ์หลังเครื่องหมาย = คือ Expression หรือ สูตร

ซึ่ง Expression จะถูกคำนวณออกมาได้สิ่งที่เรียกว่า Value หรือ ค่าผลลัพธ์ ซึ่งมีได้หลายประเภท

เรามาลงรายละเอียดแต่ละตัวกันครับ

Variable (ชื่อตัวแปร)

ถ้าจะใช้ชื่อตัวแปรแบบอ่านง่ายที่สุด ต้องมีลักษณะดังนี้

  1. ต้องขึ้นต้นด้วยตัวอักษร หรือ _
  2. ห้ามมีช่องว่างเว้นวรรค คีย์เวิร์ดที่สงวนไว้ หรือ สัญลักษณ์ประหลาด

ถ้าจะผิดกฎดังกล่าว ต้องใส่ชื่อตัวแปรแบบนี้  #”ชื่อตัวแปร” นั่นคือ ใส่ชื่อไว้ในเครื่องหมายคำพูด แล้วขึ้นต้นด้วย Hashtag (ถ้าสังเกตเวลาใช้เครื่องมือ UI มาตรฐาน มันจะตั้งชื่อตัวแปรให้เราแบบนี้แหละ)

let
	Step1=1+2,
	#"Step 2"=Step1 *2,
	Step3=#"Step 2" /3
in
	Step3

ดังนั้น ถ้าไม่อยากให้ชื่อตัวแปรใน M Code ของเรามี # ประหลาดๆ แบบนี้ ก็ให้ตั้งชื่อแบบไม่ต้องเว้นวรรคนะครับ

Expression (สูตร)

คล้ายๆ การเขียนสูตรใน Excel ที่สามารถเป็นส่วนผสมกันระหว่าง Value ประเภทต่างๆ, Operator รวมถึง ฟังก์ชันต่างๆ ทั้ง Standard Function ที่มีมาให้อยู่แล้ว และ Custom Function ที่เราเขียนขึ้นเองได้ด้วย

ซึ่งผลลัพธ์ของสูตรก็จะให้ค่าออกมาเป็น Value เช่นกัน (เหมือน Excel นั่นแหละ) แต่สิ่งที่แตกต่างจาก Excel ปกติคือ Value ของ Power Query สามารถออกมาเป็นค่าเดี่ยวๆ หรือมาเป็นโครงสร้างก็ได้ เช่น List, Record, ตาราง

 ประเภทของ Value (ผลลัพธ์)

ประเภทของ Value ใน Power Query มีดังนี้

ประเภทรูปแบบ
(ระวังตัวพิมพ์เล็กพิมพ์ใหญ่)
ตัวอย่าง
Null (ค่าว่าง)nullnull
Logical (ตรรกะ)true falsetrue false
Number (ตัวเลข)ตัวเลข0 1 -3 8.5 4.9e-5
Time (เวลา)#time(hour, minute, second)#time(06,15,00)
Date (วันที่)#date(year, month, day)#date(2019,07,21)
DateTime (วันที่คู่กับเวลา)#datetime(year, month, day, hour, minute, second)#datetime(2019,07,21, 06,15,00)
DateTimeZone (วันที่คู่กับเวลา แบบมี TimeZone)#datetimezone( year, month, day, hour, minute, second, offset-hours, offset-minutes)#datetimezone(2019,07,21, 06,15,00, 07,00)
Duration (ระยะเวลา)#duration(day,hour,minute,second)#duration(1,2,30,0)
Text (ข้อความ)“ข้อความในคำพูด”“hello” “สวัสดี”
Binary ไฟล์/ข้อมูล Binary#binary(“AQID”)
List (รายการข้อมูล
มักใช้กับข้อมูล 1 คอลัมน์)
{value1,value2,value3}{1, 2, 3}
Record (ข้อมูล 1 แถว)[field1=value1,field2=value2][ A = 1, B = 2 ]
Table#table( List ของชื่อหัวตาราง , List ของข้อมูล)
โดยข้อมูลแต่ละแถวเป็น List อีกทีนึง
#table({“A”,”B”},{{1,2},{3,4}})
Function(input1,input2,…) => expression ของฟังก์ชันนั้นๆ(x) => x + 1
Type type { number }
type table [ A = any, B = text ]

เดี๋ยวเราจะมาลงรายละเอียดข้อมูลแต่ละประเภทอีกทีครับ

Operator ต่างๆ ที่ใช้บ่อยๆ

ใน Power Query นั้น Operator ต่างๆ จะทำงานได้เฉพาะกับ Data Type ที่เหมาะสมเท่านั้น เช่น เราไม่สามารถเอาข้อความที่มีหน้าตาเหมือนตัวเลขไปทำการบวกลบกันได้ ซึ่งต่างจาก Excel และ DAX ที่จะพยายาม Convert ประเภทข้อมูลให้เราโดยอัตโนมัติ

ประเภทเครื่องหมายความหมายตัวอย่าง
คำนวณ+บวก3+2
 –ลบ3-2
 *คูณ3*2
 /หาร3/2
ตัวเชื่อม( )ให้คำนวณในวงเล็บก่อน(3+2)*5
 &เชื่อมข้อมูล“Big”&”Cat”
เปรียบเทียบ=เท่ากับ3=2
 <> ไม่เท่ากับ3<>2
 > มากกว่า3>2
 < น้อยกว่า3<2
 >=มากกว่าหรือเท่ากับ3>=2
 <=น้อยกว่าหรือเท่ากับ3<=2
ตรรกะandและx>3 and x<=10
 orหรือx<3 or x>10
 notกลับจริงเป็นเท็จ
เท็จเป็นจริง
not (x>3)

เรื่องที่ควรรู้ของ M Code

Comment

//ถ้าจะ Comment บรรทัดเดียว ทำแบบนี้ (ใส่เครื่องหมาย // นำหน้า)
/*
ถ้าจะ Comment 
หลายบรรทัด
ทำแบบนี้ (ใส่ใน /* ….. */ )
*/

Code จะเรียงยังไงก็ได้!!

เนื่องจากมันจะไปหาเองว่าเราต้องการค่าใน Step2 แล้วมันจะไปดูต่อว่าต้องการค่าใน Step1 ดังนั้นเราจะเรียง Code ยังไงก็ได้ครับ เพราะจริงๆ มันก็เป็นแค่ลำดับของการตั้งชื่อตัวแปรเท่านั้นแหละ

let
	Step2=Step1*2,
Step1=1+2
	
in
	Step2

Return ค่าอะไรออกมาก็ได้

ซึ่งเราจะ Return ค่าอะไรออกมาหลัง In ก็ได้ เช่น ถึงจะเขียน Step2 มาแล้ว แต่เรา Return ค่า Step1 ก็ได้

let
	Step1=1+2,
	Step2=Step1*2
in
	Step1

โดยที่หากเราเขียนแบบนี้ Power Query จะหาทางเองว่าต้องใช้ตัวไหนบ้างในการรัน แล้วมันจะไม่รันตัวที่ไม่จำเป็นด้วย! ซึ่งในตัวอย่างข้างบนมันจะดูว่า สุดท้ายแล้วต้องการผลลัพธ์จากตัวแปร Step1 ซึ่งคำนวณจาก เอาค่า 1+2 ดังนั้นมันจะไม่เสียเวลาไปคำนวณ Step2 เลยครับ หรือถ้าเอาแบบเห็นชัดๆ เลย คือ

let
	Step1=1+2,
	Step2=Step1*2
in
	4+5

แบบนี้ผลลัพธ์จะได้ 9 ซึ่งเกิดจาก 4+5 เลย โดยไม่เกี่ยวกับ Step1 และ Step2 ด้วยซ้ำครับ !!

let in ซ้อน let in ได้อีก

let
	Step1=1+2,
	Step2=Step1+3
	Step3=
		let
			Step1 = 100
			Step2 = Step1*2
		in
			Step2
in
	Step3

แบบนี้จะได้ผลลัพธ์ออกมาเป็น 200 เนื่องจาก Step3 สุดท้ายจะไปอ่านค่า Step2 ที่อยู่ใน Let ชั้นในว่า

Step2 = Step1*2 // ซึ่งจะได้ Step2 = 100*2 ซึ่งจะได้ 200

ดังนั้นจะเห็นว่าเราสามารถตั้งชื่อ Step ซ้ำกันได้ ถ้าอยู่ใน let คนละ scope กันครับ

ค่า Value ที่เป็น Output ของ Expression

ใน Power Query มีได้หลายแบบ ทั้งที่ให้ค่าเดี่ยวๆ และ ค่าเป็นโครงสร้าง ดังนี้

Primitive Value : ข้อมูลพื้นฐานตัวเดียวเดี่ยวๆ

พวกนี้เราได้เรียนรู้กันไปแล้วในตารางข้างบนเนอะ

  • Null (ค่าว่าง)
  • Logical (ตรรกะ)
  • Number (ตัวเลข)
  • Time (เวลา)
  • Date (วันที่)
  • DateTime (วันที่คู่กับเวลา)
  • DateTimeZone (วันที่คู่กับเวลา แบบมี TimeZone)
  • Duration (ระยะเวลา)
  • Text (ข้อความ)

Structured Values : ข้อมูลที่ประกอบกันเป็นโครงสร้าง

List : รายการข้อมูล

เป็นการเอาข้อมูล Primitive มาเรียงกัน อยู่ในเครื่องหมาย { } คั่นด้วย comma

มักถูกใช้เป็นข้อมูล 1 คอลัมน์ใน Table ที่มีหลายๆ ค่า

รูปแบบ

{value1, value2, value3 }

ตัวอย่าง

  • {1, 2, 3} // list ตัวเลข 1 2 และ 3
  • { 1..5 } // มีค่าเท่ากับ { 1, 2, 3, 4, 5 }
  • {“d”..”g”} // มีค่าเท่ากับ { “d”, “e”, “f”, “g”}
  • {“D”..”G”} // มีค่าเท่ากับ { “D”, “E”, “F”, “G”}
  • {100, true, “A”}

รวม List ได้ด้วย &

{ 1, 2 } & {3, 4 } // { 1, 2, 3, 4 }
 { 1, 2 } & { 3, 2} // { 1, 2, 3, 2 }

อ้างอิงข้อมูลใน List ด้วย {เลข index}

โดยที่ เลข index จะเริ่มต้นด้วยเลข 0 (itemแรก คือลำดับที่ 0 นะ ระวังให้ดี!!)

SampleList = { 10, 20, 30 }

ลองคลิ๊กขวาแล้ว Drill Down ที่ 20 ดู จะได้ออกมาเป็น

SampleList{1} // จะได้ 20  และสังเกตว่าถ้าจะอ้างอิง item ลำดับที่ 2 เลข index จะเป็นเลข 1 นะ

Record : เป็นกลุ่มของ Field

คำว่า Field หมายถึงข้อมูลที่เป็นคู่กันระหว่าง name และ value

มักถูกใช้เป็นข้อมูล 1 แถวใน Table ที่มีหลายๆ คอลัมน์

รูปแบบ

[ FieldName1=value1, FieldName2=value2, FieldName3=value3 ]

โดยที่ชื่อ Field จะเป็นอะไรก็ได้ เป็นตัวหนังสือ ตัวเลข หรือเว้นวรรคก็ได้ ไม่ต้องใส่เครื่องหมายคำพูดด้วย

ตัวอย่าง

[ A = 100, B = 200, C = 300 ]

รวม Record ได้ด้วย &

[ A = 1 ] & [ B = 2 ] // [ A = 1, B = 2]

ถ้าชื่อ field ซ้ำ จะยึดตัวหลังสุด

[ A = 1, B=2 ] & [ A = 10 ] // [ A = 10, B=2 ]

การอ้างอิงข้อมูลใน Record ด้วย [ชื่อ Field]

SampleRecord = [ First Name = "Sira", Last Name = "Ekabut", Height = 172, Weight = 67 ]

ลองคลิ๊กขวาแล้ว Drill Down ที่คำว่า Sira ใน First Name ดู จะออกมาเป็น

SampleRecord[First Name]    // จะได้ "Sira"

Table : ตาราง

คือข้อมูลที่ถูกจัดให้สามารถมีหลายคอลัมน์ และสามารถมีหลายแถวได้ โดยแต่ละคอลัมน์จะสามารถอ้างอิงได้ด้วยชื่อคอลัมน์

รูปแบบ (แบบพื้นฐาน)

#table( set ของชื่อหัวตาราง , set ของข้อมูลแต่ละแถวอยู่ภายใน  { } คั่นด้วย comma )
#table( {"col1","col2"} , { { r1c1value, r1c2value} , { r2c1value, r2c2value},...   } )

ตัวอย่าง

SampleTable = #table( {"A", "B"}, { {1, 2}, {3, 4}, {5, 6} } )

หรือจะเขียนเป็นแบบนี้ก็จะดูคล้ายตารางมากขึ้น

SampleTable = #table( 
{"A", "B"}, 
{ 
{1, 2}, 
{3, 4}, 
{5, 6} 
} )

ซึ่งจะได้ผลลัพธ์แบบนี้ครับ

การอ้างอิงข้อมูลใน Table

ถ้าอ้างอิงด้วย table[ ชื่อ Field ] (แบบไม่ต้องมีเครื่องหมายคำพูด)  จะได้ผลลัพธ์เป็น List ที่เป็นรายการของ Field นั้นๆ (มักใช้กับการอ้างอิงข้อมูลใน 1 คอลัมน์ในตาราง) เช่น =SampleTable[B] จะได้ List ข้อมูลในคอลัมน์ B ออกมา

ถ้าอ้างอิงด้วย table{เลข index} จะได้ผลลัพธ์ออกมาเป็น Record ซึ่งเป็นข้อมูลใน 1 แถวของตาราง เช่น =SampleTable{1} จะได้ Record แถวที่ 2 ของ Table ออกมา (อย่าลืมว่า Index แถวแรก เริ่มที่เลข 0)

ถ้าอ้างอิงด้วยทั้ง {index} และ [ชื่อ Field] ซ้อนกัน ก็จะได้ Item นั้นๆ ออกมาเลย (เพราะระบุทั้งแถวทั้งคอลัมน์แล้ว) เช่น ลองกด Drill Down ดูที่เลข 4 จากตอนที่เป็น Table จะได้แบบนี้

= SampleTable{1}[B] // หมายถึงเอาแถวที่สอง (index1 คือแถว 2) และ เอา Field ชื่อ B

ซึ่งเราสามารถอ้างอิง Field ก่อนแถวก็ได้เช่นกัน เช่น = SampleTable[B]{1}

นอกจากนี้เรายังสามารถอ้างอิงจาก Value ใน Field ที่กำหนด เพื่อให้ได้ Record ออกมาได้ด้วย
ด้วยรูปแบบ {[ชื่อ Field = ค่าที่ต้องการ]} เช่น

= SampleTable{[A=3]}

จะได้ Record ที่ Field A มีค่าเท่ากับเลข 3

อย่างไรก็ตาม วิธีอ้างอิงจาก Value จะใช้ได้ก็ต่อเมื่อมี Value นั้นๆ แค่ตัวเดียวใน Table เท่านั้น หากมีค่าซ้ำกันมันจะให้ผลเป็น Error ทันที

Tips : หากเรากด Drill Down ลงไปในช่องที่อยู่ในคอลัมน์ที่เคยสั่ง Remove Duplicates เอาไว้ก่อน จะทำให้ Power Query รู้ว่า Field นั้นมีค่าไม่ซ้ำกันแน่นอน สูตรที่ออกมาจะเป็นลักษณะของการอ้างอิงจาก Value ใน Field ที่กำหนด ได้โดยอัตโนมัติ

เช่น ตารางของผมเคยกด Remove Duplicates คอลัมน์ TXID มาก่อน จากนั้น ผมกด Drill Down ไปที่ Field ราคาต่อชิ้น ในแถวเดียวกับ TXID ที่มีค่าเป็น TX00004 จะได้ผลลัพธ์ออกมาดังนี้

การ Convert ประเภทข้อมูลที่ใช้บ่อย

อย่างที่บอกไปแล้วว่า เวลาจะใช้ Operator หรือฟังก์ชันต่างๆ ใน M Code เรื่องของ Data Type เป็นเรื่องที่ค่อนข้างซีเรียส ดังนั้นเราจะต้องมีการ Convert ประเภทข้อมูลให้ถูกต้องก่อนที่จะทำการคำนวณด้วย

ซึ่งการ Convert ประเภทข้อมูลใน M Code เราจะใช้ฟังก์ชันมาช่วยครับ วิธีการจำทั่วไป คือ จะแปลงเป็นอะไรให้ขึ้นต้นด้วยประเภทนั้น แล้วตามด้วย .From ได้เลย

จากเป็นวิธีการตัวอย่าง
ใดๆNumberNumber.From(value as any) as number=Number.From(“0123”)
=123

=Number.From(#date(1900,01,01)) =2
สังเกต : วันแรกที่ Power Query แทนด้วยเลข 1 คือวันที่ 31 Dec ค.ศ.1899 นะครับ ซึ่งไม่ตรงกับ Excel ซึ่งเลข 1 คือวันที่ 1 Jan ค.ศ. 1900)
ใดๆTextText.From(value as any) as text=Text.From(123)
=”123″
ใดๆLogicLogical.From(value as any) as logical= Logical.From(1)
= Logical.From(“True”)
= true
ใดๆDateDate.From(value as any, optional culture as nullable text) as nullable date=Date.From(1)
=31/12 ค.ศ.1899 หรือ พ.ศ. 2442

=Date.From(“21 July 2019″,”en-GB”)
=21/7 ค.ศ.2019 หรือ พ.ศ. 2562
ใดๆDateTimeDateTime.From(value as any, optional culture as nullable text) as nullable datetime=DateTime.From(“21 July 2019 13:30″,”en-GB”)
=21/7 ค.ศ.2019 หรือ พ.ศ. 2562 เวลา 13:30 น.

Tips: ถ้าจะทำเป็นจำนวนเต็ม แล้วจะใช้ Int64 ต้องระวัง เพราะถ้าใช้ Int64 มีการปัดตัวเลขตามหลักคณิตศาสตร์ด้วย

=Int64.From(1234.789)
=1235

ถ้าจะปัดเศษทิ้งไปเลย แนะนำให้ใช้ RoundDown แทน

= Number.RoundDown(1234.789,0)
=1234

สารบัญซีรีส์ M Code

  • คัมภีร์สรุป M Code ใน Power Query ตอนที่ 1
  • คัมภีร์สรุป M Code ใน Power Query ตอนที่ 2 : Function และ each
  • คัมภีร์สรุป M Code ใน Power Query ตอนที่ 3: เจาะลึกเรื่องของ List
  • คัมภีร์สรุป M Code ใน Power Query ตอนที่ 4: เทคนิค M Code ที่ใช้บ่อย
  • Power Query Speed Up Tips : รวมเทคนิคแก้ปัญหา Power Query ช้า ให้ทำงานเร็วขึ้น
  • สารพัดวิธีกำจัดอักขระที่ไม่ต้องการออกจากข้อความ (Clean Bad Characters)
  • วิธีเขียนสูตรย้อนเวลาแบบ TENET ให้ตัวอักษรกลับหน้าหลัง
  • เทคนิคแก้สูตร M Code ให้ Power Query ทำงานได้ดั่งใจ
  • วิธีใช้ Power Query ดึงข้อมูลจาก Web API : ตอนที่ 2
  • วิธีใช้ Power Query ดึงข้อมูลจาก Web API : ตอนที่ 3
  • แนะนำ/วิธีใช้ ThepExcel-Mfx : M Code สำเร็จรูปจาก ThepExcel
  • วิธีใช้ Regular Expression (RegEx) ใน Power Query
  • วิธีจัดการข้อมูลแย่ๆ ด้วย Power Query ทั้งข้อมูลปนกัน ข้อมูลอยู่บนหัวตาราง
  • แก้ปัญหา Power Query มองไม่เห็นการเพิ่มคอลัมน์ใหม่ในไฟล์ CSV
  • วิธีแก้ปัญหาเวลาเขียน M Code แบบ each ซ้อนกันหลายอัน
  • วิธีใช้ Power Query ดึงข้อมูล EMS Tracking จากไปรษณีย์ไทย ผ่าน Web API

แหล่งอ้างอิง M Code เจ๋งๆ

Website

  • https://blog.crossjoin.co.uk/category/power-query/
  • https://bengribaudo.com/blog/2017/11/17/4107/power-query-m-primer-part1-introduction-simple-expressions-let

YouTube

  • https://youtu.be/_zEmTGHV3UM
  • https://youtu.be/3uKNNZqBIkg
  • https://youtu.be/IQpniTiXQiI
  • https://youtu.be/L0Y1KL7o3aQ

แชร์ความรู้ให้เพื่อนๆ ของคุณ
694    
694    

ติดตามเทพเอ็กเซล

  • Facebook
  • YouTube

อบรมกับเทพเอ็กเซล

🔥 คอร์สใหม่ล่าสุด 🔥

การทำ Optimization ด้วย Excel Solver
สำหรับงานวางแผน
คอร์สออนไลน์ เทพเอ็กเซล
คอร์สออนไลน์ จากเทพเอ็กเซล ดูกี่รอบก็ได้
อบรม Excel / Power BI ให้องค์กรของคุณ

บทความล่าสุด

  • แนวทางฝึกฝน Excel ให้เก่งขึ้น
  • รวม Link เว็บ/เพจเกี่ยวกับ AI
  • วิธีกำหนดท่าทางแบบให้ได้ดั่งใจด้วย ControlNet ใน Stable Diffusion [Part4]
  • วิธีสั่ง Prompt และตั้งค่าใน Stable Diffusion ให้รูปสวยโดนใจ [Part3]
  • วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2]
  • วิธีใช้งาน AI สร้างรูปสุดเจ๋งและฟรีด้วย Stable Diffusion ฉบับมือใหม่ [ตอนที่1]
  • 10 ไอเดีย เรียนรู้ Excel ผ่าน ChatGPT AI สุดเจ๋ง

บทความแนะนำ

🔥ฟังก์ชันทั้งหมดใน Excel 🔥

  • แกะเคล็ดวิชา Excel Wizard ในการแข่ง Speed Run Excel ระดับโลก
  • เจาะลึก CALCULATE ใน DAX แบบลึกสุดใจ : Part 1
  • Series สอนดึงข้อมูลจากเว็บ ด้วย Power Automate Desktop
  • สรุปการใช้ LAMBDA ฟังก์ชันที่ใช้สร้างฟังก์ชันใน Excel 365 และผองเพื่อน
  • วิธีใช้ Excel คำนวณระยะเวลาการทำงานรวม แถมระบุเวลาพักได้แบบยืดหยุ่น
  • วิธีจัดการข้อมูลแย่ๆ ด้วย Power Query ทั้งข้อมูลปนกัน ข้อมูลอยู่บนหัวตาราง
  • แยกข้อมูลที่อยู่สุดเน่า ด้วย Excel Power Query

Categories

Tags

ai collection concepts copy database Data Model data validation date dax dropdown error excel filter finance find format formula function game graph IF index intro inventory len link logic lookup match m code merge mid overview paste pivot power query right row solver sort speed split substitute table text time tips trim vba vlookup

Archives

  • April 2023 (3)
  • March 2023 (2)
  • February 2023 (2)
  • January 2023 (1)
  • October 2022 (1)
  • September 2022 (3)
  • August 2022 (3)
  • July 2022 (1)
  • June 2022 (3)
  • May 2022 (1)
  • April 2022 (2)
  • February 2022 (1)
  • December 2021 (2)
  • November 2021 (10)
  • September 2021 (2)
  • August 2021 (6)
  • July 2021 (2)
  • June 2021 (2)
  • May 2021 (10)
  • April 2021 (3)
  • March 2021 (3)
  • February 2021 (4)
  • January 2021 (8)
  • December 2020 (5)
  • November 2020 (13)
  • October 2020 (5)
  • September 2020 (11)
  • August 2020 (4)
  • July 2020 (13)
  • June 2020 (17)
  • May 2020 (16)
  • April 2020 (16)
  • March 2020 (10)
  • February 2020 (15)
  • January 2020 (16)
  • December 2019 (4)
  • November 2019 (3)
  • October 2019 (9)
  • September 2019 (1)
  • August 2019 (7)
  • June 2019 (3)
  • May 2019 (9)
  • April 2019 (9)
  • March 2019 (2)
  • February 2018 (1)
  • January 2018 (3)
  • November 2017 (3)
  • August 2017 (1)
  • July 2017 (1)
  • June 2017 (1)
  • May 2017 (6)
  • April 2017 (6)
  • March 2017 (7)
  • February 2017 (1)
  • January 2017 (2)
  • December 2016 (1)
  • October 2016 (2)
  • September 2016 (3)
  • August 2016 (2)
  • July 2016 (2)
  • June 2016 (1)
  • May 2016 (1)
  • April 2016 (1)
  • March 2016 (2)
  • February 2016 (1)
  • January 2016 (2)
  • December 2015 (2)
  • November 2015 (5)
  • October 2015 (3)
  • June 2015 (2)
  • May 2015 (1)
  • April 2015 (26)
  • January 2015 (1)
  • December 2014 (1)
  • November 2014 (2)
  • October 2014 (1)
  • September 2014 (2)
  • August 2014 (1)
  • June 2014 (1)
  • May 2014 (1)
  • April 2014 (3)
  • March 2014 (3)
  • February 2014 (12)
  • January 2014 (7)
  • December 2013 (2)
  • November 2013 (8)
  • October 2013 (2)

เทพเอ็กเซล : Thep Excel

copyright © 2022

  • Facebook
  • YouTube
เว็บไซต์นี้ใช้คุกกี้ (Cookies)
บริษัท เทพเอ็กเซล จำกัด ให้ความสำคัญต่อข้อมูลส่วนบุคคลของท่าน เพื่อการพัฒนาและปรับปรุงเว็บไซต์รวมถึงสินค้าและบริการต่างๆ หากท่านใช้บริการเว็บไซต์นี้ โดยไม่มีการปรับตั้งค่าใดๆ แสดงว่าท่านยินยอมที่จะรับคุกกี้บนเว็บไซต์ และนโยบายสิทธิส่วนบุคคลของเรา
ตั้งค่าคุกกี้ยอมรับทั้งหมดอ่านเพิ่มเติม
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT