Page 1 of 1

แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Wed Feb 02, 2011 3:01 pm
by โดดเดี่ยวผู้น่ารัก
:?: รบกวนอีกแล้วค่ะ ความต้องการคือ ต้องการแยกตัวอักษรที่ได้ระบายสีแต่ละสีออกจากกันเป็นแต่ละ Column ค่ะ ไม่ทราบว่าสามารถทำได้หรือเปล่าค่ะ

ขอบคุณนะค่ะ :D

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Wed Feb 02, 2011 5:54 pm
by snasui
:D เป็นงานที่ไม่ง่ายนักครับ

สามารถทำตามขั้นตอนด้านล่างได้ครับ

1. ที่ B2 แยกข้อความแรกมาแสดง

=Left(A2,Find(" ",A2)-1)

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)))))

3. ที่ C2 แยกข้อความที่ 2 มาแสดง

=Trim(Substitute(Left(A2,Find(D2,A2)-1),B2,""))

4. ที่ E2 แยกข้อความที่ 4 มาแสดง

=Left(Trim(Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "),"")),Find(" ",Trim(Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "),"")))-1)

5. ที่ F2 แยกข้อความที่ 5 มาแสดง

=Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "&E2),"")

สูตรทั้งหมดสามารถกดแป้น Enter ธรรมดาในการรับสูตรเนื่องจากไม่ได้เป็นสูตร Array

ดูไฟล์แนบประกอบครับ

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Wed Feb 02, 2011 10:50 pm
by kmb
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)))))
พอจะได้แนวคิดครับ แต่รบกวนขอคำอธิบายสำหรับสูตรนี้หน่อยครับ พอเข้าใจว่าจะหาตำแหน่งของตัวเลขที่เจอที่น้อยที่สุด แต่ทำไมต้องเขียนประมาณนี้ :?: สูตรอื่นน่ะพอจะเข้าใจ :D

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Wed Feb 02, 2011 11:12 pm
by snasui
:D สูตรนี้เป็นการหาชุดตัวเลขติดกันที่อยู่รวมกับอักขระอื่น ๆ จะขออธิบายแบบบรรยายแล้วกันครับ

เริ่มต้นด้วยการหาตัวเลขตัวแรกอยู่ภายใต้ฟังก์ชั่น Mid ซึ่งเป็นแบบ Array ลักษณะคือเมื่อเจอตัวเลขลำดับแรกแล้วก็จะเริ่มตัดและตัดเพิ่มทีละอักขระไปเรื่อย ๆ เพิ่มไปจำนวนเท่าไรก็แล้วแต่ว่าอักขระต้นแหล่งมีความยาวเท่าไร แล้วแปลงค่าทั้งหลายที่ตัดมานั้นกลับมาเป็นตัวเลขด้วยตัว -- ที่อยู่ข้างหน้า Mid หากค่าที่ตัดมาเป็นตัวเลขล้วน ๆ ก็จะถูกแปลงเป็นค่าตัวเลข แต่หากค่าที่ตัดมาเริ่มด้วยตัวเลขต่อท้ายด้วยอักขระจะได้ค่าผิดพลาด #Value! จากนั้นใช้ Lookup(9.99999999999999e307 หาตัวเลขสุดท้ายมาแสดงเป็นคำตอบ

ลองแกะสูตรด้วยการ Evaluate อยู่ในเมนู Formula > Evaluate Formula หรืออีกวิธีแกะด้วยการคลุมช่วงสูตรที่สนใจแล้วกดแป้น F9 จะทำให้เข้าใจง่ายขึ้นครับ

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Thu Feb 03, 2011 8:09 am
by โดดเดี่ยวผู้น่ารัก
ขอบพระคุณมากค่ะ เด๋วจะลองทำดูได้ผลยังไงจะแจ้งให้ทราบค่ะ :D

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Thu Feb 03, 2011 8:46 am
by โดดเดี่ยวผู้น่ารัก
:o สามารถทำได้แล้วค่่ะ ขอบคุณนะค่ะ :D

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Thu Feb 03, 2011 8:59 am
by kmb
snasui wrote::D สูตรนี้เป็นการหาชุดตัวเลขติดกันที่อยู่รวมกับอักขระอื่น ๆ จะขออธิบายแบบบรรยายแล้วก้นครับ

เริ่มต้นด้วยการหาตัวเลขตัวแรกอยู่ภายใต้ฟังก์ชั่น Mid ซึ่งเป็นแบบ Array ลักษณะคือเมื่อเจอตัวเลขลำดับแรกแล้วก็จะเริ่มตัดและตัดเพิ่มทีละอักขระไปเรื่อย ๆ เพิ่มไปจำนวนเท่าไรก็แล้วแต่ว่าอักขระต้นแหล่งมีความยาวเท่าไร แล้วแปลงค่าทั้งหลายที่ตัดมานั้นกลับมาเป็นตัวเลขด้วยตัว -- ที่อยู่ข้างหน้า Mid หากค่าที่ตัดมาเป็นตัวเลขล้วน ๆ ก็จะถูกแปลงเป็นค่าตัวเลข แต่หากค่าที่ตัดมาเริ่มด้วยตัวเลขต่อท้ายด้วยอักขระจะได้ค่าผิดพลาด #Value! จากนั้นใช้ Lookup(9.99999999999999e307 หาตัวเลขสุดท้ายมาแสดงเป็นคำตอบ

ลองแกะสูตรด้วยการ Evaluate อยู่ในเมนู Formula > Evaluate Formula หรืออีกวิธีแกะด้วยการคลุมช่วงสูตรที่สนใจแล้วกดแป้น F9 จะทำให้เข้าใจง่ายขึ้นครับ
ขอบคุณครับ พอจะเข้าใจแล้วครับ แต่จะนำแนวคิดนี้ไปประยุกต์ใช้เนี่ย คงต้องศึกษาต่อไปครับ :lol:

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Thu Feb 03, 2011 9:03 am
by kmb
snasui wrote:
5. ที่ F2 แยกข้อความที่ 5 มาแสดง

=Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "&E2),"")
เพิ่มเติมนิดนึงครับ ถ้าไม่อยากได้เป็นช่องว่างนำหน้าคงต้องเติม Trim นำหน้าสูตรข้างบนด้วยครับเป็น
=Trim(Substitute(Trim(A2),Trim(B2&" "&C2&" "&D2&" "&E2),"")) :mrgreen:

Re: แยกชื่อที่รวมกันอยู่ออกมาเป็น column

Posted: Thu Feb 03, 2011 10:27 am
by โดดเดี่ยวผู้น่ารัก
ขอขอบคุณทุกๆท่านเลยค่ะ ที่ช่วยหาวิธีการทำเพื่อให้ชีวิตมันง่ายขึ้นจากเดิมมาก :) :D