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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)พอจะได้แนวคิดครับ แต่รบกวนขอคำอธิบายสำหรับสูตรนี้หน่อยครับ พอเข้าใจว่าจะหาตำแหน่งของตัวเลขที่เจอที่น้อยที่สุด แต่ทำไมต้องเขียนประมาณนี้ สูตรอื่นน่ะพอจะเข้าใจsnasui wrote:
2. ที่ D2 แยกข้อความที่ 3 ซึ่งเป็นตัวเลขมาแสดง
=Lookup(9.99999999999999E+307,--Mid(A2,Min(Search({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")),Row(Indirect("1:"&Len(A2)))))
ขอบคุณครับ พอจะเข้าใจแล้วครับ แต่จะนำแนวคิดนี้ไปประยุกต์ใช้เนี่ย คงต้องศึกษาต่อไปครับsnasui wrote: สูตรนี้เป็นการหาชุดตัวเลขติดกันที่อยู่รวมกับอักขระอื่น ๆ จะขออธิบายแบบบรรยายแล้วก้นครับ
เริ่มต้นด้วยการหาตัวเลขตัวแรกอยู่ภายใต้ฟังก์ชั่น Mid ซึ่งเป็นแบบ Array ลักษณะคือเมื่อเจอตัวเลขลำดับแรกแล้วก็จะเริ่มตัดและตัดเพิ่มทีละอักขระไปเรื่อย ๆ เพิ่มไปจำนวนเท่าไรก็แล้วแต่ว่าอักขระต้นแหล่งมีความยาวเท่าไร แล้วแปลงค่าทั้งหลายที่ตัดมานั้นกลับมาเป็นตัวเลขด้วยตัว -- ที่อยู่ข้างหน้า Mid หากค่าที่ตัดมาเป็นตัวเลขล้วน ๆ ก็จะถูกแปลงเป็นค่าตัวเลข แต่หากค่าที่ตัดมาเริ่มด้วยตัวเลขต่อท้ายด้วยอักขระจะได้ค่าผิดพลาด #Value! จากนั้นใช้ Lookup(9.99999999999999e307 หาตัวเลขสุดท้ายมาแสดงเป็นคำตอบ
ลองแกะสูตรด้วยการ Evaluate อยู่ในเมนู Formula > Evaluate Formula หรืออีกวิธีแกะด้วยการคลุมช่วงสูตรที่สนใจแล้วกดแป้น F9 จะทำให้เข้าใจง่ายขึ้นครับ
เพิ่มเติมนิดนึงครับ ถ้าไม่อยากได้เป็นช่องว่างนำหน้าคงต้องเติม Trim นำหน้าสูตรข้างบนด้วยครับเป็นsnasui wrote:
5. ที่ F2 แยกข้อความที่ 5 มาแสดง
=Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "&E2),"")