Page 1 of 1

ต้องการแตกข้อมูลที่คั่นด้วย comma แล้วเรียงใหม่ในแนวตั้ง

Posted: Fri Aug 24, 2012 10:03 am
by nook
ขอผู้รู้ช่วยหน่อยค่ะ
ต้องการแตกข้อมูลที่คั่นด้วย comma แล้วเอามาเรียงใหม่ในแนวตั้ง โดยเอาข้อมูลทั้งหมดมาต่อๆกันในแนวตั้ง ดังตัวอย่างไฟล์ที่แนบค่ะ โดยซ้ายมือคือข้อมูลเดิม และ ขวามือคือสิ่งที่ต้องการค่ะ

ตอนนี้ใช้วิธีการ text to column เพื่อแยกข้อมูลออกเป็นคนละ column แล้ว copy > paste special > transpose ทีละตัว แต่ข้อมูลจริงๆมีเยอะมาก ก็ใช้เวลาค่อนข้างมากอยู่ อยากขอวิธีที่เร็วกว่านี้น่ะค่ะ

ขอบคุณค่ะ

Re: ต้องการแตกข้อมูลที่คั่นด้วย comma แล้วเรียงใหม่ในแนวตั้ง

Posted: Fri Aug 24, 2012 3:22 pm
by ChoBkuN
ขั้นตอนครับ
1. หาจำนวนรายชื่อของแต่ละ Vendor
C2 key =LEN(B2)-LEN(SUBSTITUTE(B2,",",""))+1
Copy ลงข้างล่าง
แล้วก็ Sum บรรทัดสุดท้าย เพื่อหาบรรทัดทั้งหมดที่จะ List

2. หาบรรทัดที่จะให้เริ่ม Vendor รายใหม่
D2 key =SUM($C$2:C2)-C2+1
Copy ลงข้างล่าง

3. หาจำนวนตัวอักษรของแต่ละคน ของแต่ละ Vendor
E2 key =IFERROR(IF(F2<>F1,SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),1),SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),E1+1)),LEN(LOOKUP(F2,$A$2:$A$16,$B$2:$B$16))+1)
Copy ลงข้างล่าง
ถ้าเป็น 2003 ให้ใช้
=IF(ISERROR(IF(F2<>F1,SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),1),SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),E1+1))),LEN(LOOKUP(F2,$A$2:$A$16,$B$2:$B$16))+1,IF(F2<>F1,SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),1),SEARCH(",",LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),E1+1)))
Copy ลงข้างล่าง



4. List Vendor
F2 key =IF(ROWS($F$2:F2)>$C$17,"",LOOKUP(ROWS($F$2:F2),$D$2:$D$16,$A$2:$A$16))
*อ้างอิงยอด Sum จากข้อแรกครับ
Copy ลงข้างล่าง


5. List Name
G2 key =MID(LOOKUP(F2,$A$2:$A$16,$B$2:$B$16),IF(F2<>F1,1,E1+1),IF(F2<>F1,E2-1,E2-E1-1))
Copy ลงข้างล่าง


ป.ล. ดัดแปลงมากจาก การนำข้อมูลหลายชีทมาต่อรวมกัน
http://snasui.blogspot.com/2009/12/sheet-sheet.html

Re: ต้องการแตกข้อมูลที่คั่นด้วย comma แล้วเรียงใหม่ในแนวตั้ง

Posted: Thu Aug 30, 2012 4:52 pm
by nook
ขอบคุณมากค่ะ ช่วยได้มากๆเลย