EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)อาจารย์ครับเครื่องหมาย "~" ที่อยู่หลัง Match มันหมายถึงอะไรครับและในการป้อนเครื่องหมายนี้ขณะเขียนสูตรกดปุ๋มรงไหนครับ ผมลองกดตรงแป้นปุ่มเปลีายนภาษามันไม่ได้ครับ ผมรบกวนอาจารย์ช่วยอธิบายการคำนวนและความหมายของสูตรด้านบนให้ผมพอเข้าใจเป็นแนวทางหน่อยครับ ขอบคุณครับ
ขอบคุณครับอาาจารย์สำหรับที่มาของเครื่องหมาย ~snasui wrote: ↑Fri Jul 10, 2020 10:53 pm เครื่องหมาย Tilde สามารถอ่านเพิ่มเติมได้ที่นี่ครับ http://snasui.com/viewtopic.php?t=8597 กรณีอ่านแล้วไม่เข้าใจสามารถถามเพิ่มเติมได้ครับ
การกดแป้นให้ได้เครื่องหมาย ~ ให้กดแป้น Shift + เครื่องหมายเปลี่ยนภาษา โดยกดค้างไว้ 1 วินาทีครับ
-ขอบคุณครับอาจารย์snasui wrote: ↑Sat Jul 11, 2020 8:41 am การอ่านหรือทำความเข้าใจฟังก์ชั่นจะต้องอ่านจากสูตรนอกสุดเข้าไปยังฟังก์ชั่นด้านใน แต่การแทนค่าจะต้องแทนค่าจากฟังก์ชั่นด้านในออกด้านนอกเนื่องจากสูตรจะนำเอาผลลัพธ์ของสูตรด้านในมาใช้ประมวลต่อด้วยสูตรที่ครอบอยู่ด้านนอก การจะทำความเข้าใจสูตรซับซ้อนใด ๆ จะต้องทำทั้งสองอย่างที่กล่าวมาครับ
คำอธิบาย
จากสูตร
=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")
หมายถึง
ถ้า INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))) ได้ผลลัพธ์เป็น Error ให้แสดงค่าว่าง
หากไม่เกิด Error ให้แสดงผลลัพธ์ที่ได้
จากสูตร
INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)))
หมายถึง
จากช่วง $C$4:$C$21 ให้นำผลลัพธ์ในลำดับที่ SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)) มาแสดง ถ้าคำตอบส่วนนี้มีค่าเป็น 10 ภาพรวมสูตรจะได้เป็น INDEX($C$4:$C$21,10) แปลว่าจากช่วง $C$4:$C$21 ให้นำค่าในลำดับที่ 10 มาแสดง
จากสูตร
SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))
Small หมายถึงให้ค่าค่าที่น้อยที่สุดในลำดับที่กำหนด
ค่าที่ต้องการหาคือ IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) ซึ่งได้มาหลายค่า
ลำดับที่น้อยที่สุดที่กำหนดคือ ROWS(D$4:D4) ถ้าส่วนนี้เป็น 1 แปลว่าให้หาค่าในช่วง IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) โดยนำค่าที่น้อยที่สุดในลำดับที่ 1 มาแสดง
จากสูตร
IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1)
หมายถึง หาก FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1) มีค่าเป็นจริง (ค่าเป็นจริงของสูตรนี้คือไม่เท่ากับ 0 ถ้าเป็น 0 ถือว่าเป็นเท็จ) ให้แสดงคำตอบเป็น ROW($C$4:$C$21)-ROW($C$4)+1 คือให้แสดงค่าลำดับเริ่มจาก 1 (อ่านเพิ่มเติมที่นี่่ครับ wordpress/large/) หากไม่เป็นจริงให้แสดงค่า False
จากสูตร
FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1)
หมายถึงให้ค่าค่าความถี่ของ MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0) จาก ROW($C$4:$C$21)-ROW($C$4)+1 อ่านเพิ่มเติมที่นี่ครับ http://snasui.com/viewtopic.php?f=3&t=2221
จากสูตร
MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0)
หมายถึงให้หาว่า "~"&$C$4:$C$21 อยู่ในลำดับที่เท่าไรของ $C$5:$C$21&""
การแกะสูตรให้คลุมช่วงเซลล์ในสูตรที่เราสนใจแล้วกดแป้น F9 จะเป็นประเมินสูตรออกมาเป็นผลลัพธ์ให้เห็น หากต้องการยกเลิกให้กดแป้น Ctrl+Z หากต้องการยกเลิกทั้งหมดให้กดแป้น ESC ครับ