
จากไฟล์ที่แนบมาต้องการแยกข้อความที่มีการคั่นข้อความด้วยอักขระลำดับที่ 10 หรือ Char(10) ซึ่งอักขระนี้ใช้เพื่อขึ้นบรรทัดใหม่ในเซลล์เดียวกัน
โดยมีหลักการทำงานดังนี้
ลำดับแรก ตรวจสอบว่าในแต่ละเซลล์มีกี่ข้อความ โดยใช้ฟังก์ชัน =SUMPRODUCT(LEN($C$2:C2)-LEN(SUBSTITUTE(C$2:C2,CHAR(10),""))+1) ซึ่งหมายถึงให้นำอักขระทั้งหมดในเซลล์นั้นเป็นตัวตั้ง หักออกด้วยจำนวนอักขระหลังจากเปลี่ยน Char(10) ในเซลล์นั้นให้เป็นค่าว่างแล้ว ผลลัพธ์คือจำนวนข้อความที่ต้องการในเซลล์นั้น ๆ
เมื่อได้จำนวนข้อความในแต่ละเซลล์แล้วก็ประยุกต์เพิ่มด้วยการผสานสูตรที่ให้ผลลัพธ์เป็นจำนวนข้อความสะสมไปในแต่ละบรรทัดเป็น =SUMPRODUCT(LEN($C$2:C2)-LEN(SUBSTITUTE(C$2:C2,CHAR(10),""))+1)-(LEN(C2)-LEN(SUBSTITUTE(C2,CHAR(10),"")))
โดยกำหนดให้เซลล์แรกแสดงค่าเป็น 1 เซลล์ถัด ๆ ไปจะเป็นค่าของจำนวนข้อความสะสมและเป็นลำดับแรกในเซลล์นั้น ๆ เพื่อนำค่าที่ได้นี้ไปใช้ในฟังก์ชัน Lookup ต่อไป
ลำดับถัดมาใช้สูตร =SUMPRODUCT(LEN(C2:C182)-LEN(SUBSTITUTE(C2:C182,CHAR(10),""))+1) เพื่อนับว่ามีจำนวนข้อความทั้งหมดกี่ข้อความ เพื่อจะใช้แสดงรายการทั้งหมดที่เกี่ยวข้องออกมาเป็นรายบรรทัดโดยจำนวนบรรทัดทั้งหมดต้องไม่เกินค่านี้ หากเกินจะให้แสดงผลลัพธ์เป็นค่าว่าง
เมื่อได้ค่าข้างต้นแล้วสามารถเขียนสูตรเพื่อแสดงรายการที่เกี่ยวข้องในคอลัมน์ A และ B ด้วยฟังก์ชั่น =IF(ROWS(A$185:A185)>$D$1,"",LOOKUP(ROWS(B$185:B185),$D$2:$D$182,A$2:A$182)) ซึ่งจะมีการตรวจสอบก่อนว่าจำนวนบรรทัดทั้งหมดเกินค่าใน D1 แล้วหรือไม่ หากเกินจะให้แสดงค่าว่าง
ส่วนคอลัมน์ C จะเป็นการแยกข้อความที่คั่นด้วย Char(10) ออกมาเป็นแต่ละข้อความด้วยฟังก์ชัน Filterxml โดยข้อความที่จะนำมาใช้นั้นต้องเป็นค่าในคอลัมน์ C ที่เป็นลำดับเดียวกันกับค่าในคอลัมน์ B เมื่อแยกออกมาแล้วจะแสดงค่าทีละลำดับโดยใช้จำนวนสะสมของค่าในคอลัมน์ B เป็นตัวกำหนด
ในการแสดงผลได้เปลี่ยน Char(9) ให้เป็นค่าว่างและตัดเอามาใช้เฉพาะค่าด้านหน้าก่อนอักขระ ฿ เท่านั้นครับ