Page 1 of 1

สูตรการตัดคำ

Posted: Fri Jun 08, 2012 10:06 pm
by godman
อาจารย์ครับช่วยผมด้วย ผมอยากตัดคำ เช่น จากรูปแบบ TH-FM-AMPD011.XLS ผมอยากได้เฉพาะ AMPD ผมจะทำอย่างไร ครับแต่มันไม่ง่ายขนาดนั้นสิครับ เพราะมีหลายรูปแบบมาก ครับ

Re: สูตรการตัดคำ

Posted: Fri Jun 08, 2012 11:38 pm
by ysamroeng
ถ้าผลลัพธ์ที่ได้จาก MID แล้ว มีเฉพาะตัวเลข 0 และ 1 เกินออกมาเท่านั้น ก็ลองใช้วิธีนี้ครับ
C5 =SUBSTITUTE(SUBSTITUTE(MID(D5,7,4),0,""),1,"")

enter แล้วคัดลอกลงมาทุกแถว

Re: สูตรการตัดคำ

Posted: Fri Jun 08, 2012 11:42 pm
by godman
โอ้ว สุดยอด ได้แล้วครับ ขอบคุณมากครับคูณ ysamroeng

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 8:47 am
by godman
โทษทีครับ ผมเจอปัญหาจากการใช้สูตรอีกแล้ว คือว่า พอมันมีหลาหลายรูปแบบมันก็ไม่เป็นดังต้องการ เช่น
E TH-FM-E101-3.xls
F7 TH-FM-F017-1.xls
F7 TH-FM-F017-2.XLT
F7 TH-FM-F017-3.xlt
F7 TH-FM-F017-4.xls
F7 TH-FM-F017-5.xls
WI-A TH-FM-WI-AMPD116-01.xls
WI-F TH-FM-WI-F101-01.xls
WI-F TH-FM-WI-F101-02.xls
WI-F TH-FM-WI-F102-01.xls
WI-F TH-FM-WI-F103-01.xls
WI-F TH-FM-WI-F103-02.xls
WI-F TH-FM-WI-F103-03.xls
ดังไฟล์แนบครับ
รบกวนอีกครั้งครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 9:19 am
by snasui
:lol: ลองตามนี้ครับ

ที่เซลล์ E5 คีย์

=MID(SUBSTITUTE(D5,"-","@",LEN(D5)-LEN(SUBSTITUTE(D5,"-",""))-1),FIND("@",SUBSTITUTE(D5,"-","@",LEN(D5)-LEN(SUBSTITUTE(D5,"-",""))-1))+1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},SUBSTITUTE(D5,"-","@",LEN(D5)-LEN(SUBSTITUTE(D5,"-",""))-1)&"0123456789"))-FIND("@",SUBSTITUTE(D5,"-","@",LEN(D5)-LEN(SUBSTITUTE(D5,"-",""))-1))-1)

Enter > Copy ลงด้านล่าง

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 9:38 am
by godman
โอ้ว สุดยอดๆๆๆๆๆๆ มากครับ คนธรรมดา คิดไม่ออกหรอก ดูเหมือนปัญหาจะง่าย แค่ใช้ mid ก็จบ อาจารย์สุดยอดจริงๆ ขอบคุณมากครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 9:48 am
by godman
อาจารย์ครับมี ประมาณ 3 รายการรหัส เพราะไม่ตรงความต้องการครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 10:14 am
by snasui
:lol: รายการที่ไม่ตรงลักษณะนี้ให้แก้ด้วยมือครับ เพราะมีความไม่เป็นมาตรฐานเหมือนกับรหัสอื่น ๆ ที่พอจะมีหลักเกณฑ์ในการตัดคำได้ จึงควรแก้ให้เป็นมาตรฐานเสียก่อน หากไม่เช่นนั้นก็ควรแก้ทีหลังครับ

หลักการตัดคำที่ผมใช้คือ
  1. หาว่ามี - อยู่ทั้งหมดกี่ตัว จากนั้นเปลี่ยน - ตัวรองสุดท้ายให้เป็นเครื่องหมาย @
  2. ตัดคำตั้งแต่เครื่องหมาย @ โดยจำนวนอักขระที่ตัดมีจำนวนเท่ากับ ลำดับอักขระที่เป็นตัวเลขตัวแรก ลบกับ ลำดับอักขระถัดจากเครื่องหมาย @
และหากคิดว่าแม้จะไม่เป็นมาตรฐานก็ต้องการคำตอบให้จงได้ ลองเขียน VBA สำหรับงานนี้มาครับ ติดตรงไหนก็ถามมาได้เรื่อย ๆ :mrgreen:

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 10:39 am
by ysamroeng
ลองสูตรนี้นะครับ ที่ E5
=LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(D5,LEN(D5)-6),"WI-",""),"0","-"),"1","-"),FIND("-",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(D5,LEN(D5)-6),"WI-",""),"0","-"),"1","-"))-1)

หรือถ้าอยากดูสูตรสั้นๆ ก็ลองทำเป็น 2 ขั้นตอน คือ
ที่ F5 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(D5,LEN(D5)-6),"WI-",""),"0","-"),"1","-")
และที่ G5 =LEFT(F5,FIND("-",F5)-1)

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 10:49 am
by godman
รายงานผล ครับ ใช้ได้ถูกต้องแล้วครับ ขอบคุณครับ ผมกำลังสร้างการ hyperlink เพื่อไปยังไฟล์เอกสาร ให้ผู้ใช้คลิ้กไปเปิดได้เลย รหัสเอกสารก็เลยหลากหลายมาก ผมจะไปคุยกับเจ้าหน้าที่ว่าจะปรับเปลี่ยนมาตรฐานได้หรือปล่าว แต่ยังไงก็ขอบคุณมากครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 10:59 am
by snasui
:lol: ยินดีด้วยครับ มาเสริมเป็นข้อแนะนำการใช้ไว้นิดนึงครับ กรณีด้านหน้าเป็นมาตรฐานเช่นนั้นเสมอก็สามารถใช้สูตรของคุณ ysamroeng ได้ครับ แต่หากมีความไม่แน่นอนก็จะเป็นปัญหาได้ดูตัวอย่างตามภาพด้านล่างครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 11:15 am
by godman
อ๋อ อันนี้ผมเฉลยผิดเอง ครับ ผมจะนำมาตรฐานมาใช้ดีกว่า ชัวร์กว่า

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 11:33 am
by ysamroeng
snasui wrote::lol: ยินดีด้วยครับ มาเสริมเป็นข้อแนะนำการใช้ไว้นิดนึงครับ กรณีด้านหน้าเป็นมาตรฐานเช่นนั้นเสมอก็สามารถใช้สูตรของคุณ ysamroeng ได้ครับ แต่หากมีความไม่แน่นอนก็จะเป็นปัญหาได้ดูตัวอย่างตามภาพด้านล่างครับ
คือผมเดาว่า ชื่อไฟล์เหล่านี้ น่าจะเป็นงานด้าน ISO ซึ่ง WI = Work Instruction
ส่วนชื่อไฟล์ที่ไม่มี WI ก็เดาว่าน่าจะเป็น Procedure ดังนั้น (ก็เดาอีกว่า) คงไม่มีอักษรย่ออื่น
แต่อย่างไรก็ตาม ขอแนะนำว่า การตั้งชื่อไฟล์ ชื่อหน่วยงาน หรือรหัสเอกสาร ควรมีมาตรฐานในการตั้ง
จำนวน Digit ก็ควรจะเท่ากันด้วย

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 12:16 pm
by godman
ใช่ครับ เป็นรายการเอกสาร ISO ครับ ซึงมีประมาณ 300 รายการ ก็เลยอยากทำระบบการค้นหาให้ง่าย ขึ้น ถูกต้องครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 6:41 pm
by snasui
ysamroeng wrote:
snasui wrote: :lol: ยินดีด้วยครับ มาเสริมเป็นข้อแนะนำการใช้ไว้นิดนึงครับ กรณีด้านหน้าเป็นมาตรฐานเช่นนั้นเสมอก็สามารถใช้สูตรของคุณ ysamroeng ได้ครับ แต่หากมีความไม่แน่นอนก็จะเป็นปัญหาได้ดูตัวอย่างตามภาพด้านล่างครับ
คือผมเดาว่า ชื่อไฟล์เหล่านี้ น่าจะเป็นงานด้าน ISO ซึ่ง WI = Work Instruction
ส่วนชื่อไฟล์ที่ไม่มี WI ก็เดาว่าน่าจะเป็น Procedure ดังนั้น (ก็เดาอีกว่า) คงไม่มีอักษรย่ออื่น
แต่อย่างไรก็ตาม ขอแนะนำว่า การตั้งชื่อไฟล์ ชื่อหน่วยงาน หรือรหัสเอกสาร ควรมีมาตรฐานในการตั้ง
จำนวน Digit ก็ควรจะเท่ากันด้วย
godman wrote:ใช่ครับ เป็นรายการเอกสาร ISO ครับ ซึงมีประมาณ 300 รายการ ก็เลยอยากทำระบบการค้นหาให้ง่าย ขึ้น ถูกต้องครับ
:lol: เดาได้แม่นมากครับ ผมมีโอกาสตรวจโรงงานเกี่ยวกับมาตรฐาน ISO เมื่อหลายปีมาแล้ว ก่อนไปตรวจก็ต้องตั้งหลักด้วยการอ่านมาตรฐาน ISO ไปก่อน :lol:

สำหรับประเด็นการตัดคำจำเป็นต้องได้รับเงื่อนไขหรือภาวะแวดล้อมของข้อความที่จะตัดมาอย่างเพียงพอถึงจะใช้สูตรหรือ Code ที่เหมาะสมได้ การแนบตัวอย่างที่เป็นตัวแทนของข้อมูลจริงทั้งหมดก็จะช่วยได้มากเช่นกัน แต่ควรมาพร้อมกันทีเดียว จะได้คิดทีเดียวสำหรับทุกกรณีที่สามารถเป็นไปได้

ตัวอย่างด้านล่างก็เป็นอีกวิธีสำหรับการตัดคำตามโจทย์นี้ครับ

=LEFT(SUBSTITUTE(MID(SUBSTITUTE(D5,"WI-",""),7,255),"-",0),MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},SUBSTITUTE(MID(SUBSTITUTE(D5,"WI-",""),7,255),"-",0)&"0123456789"))-1)

Enter > Copy ลงด้านล่าง :mrgreen:

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 8:35 pm
by godman
ใช่ครับ แหม่ เป็น auditor ก็ไม่บอก ผมนี่แหละเป็น auditor และดูระบบ ISO ด้วยเป็นจ้อบงาน หนึ่งในนั้น ผมมีปัญหาเหมือนอาจารย์จะรู้แล้วเหละ ว่าคืออะไร เพราะคงเดาออก ใช่เลย รูปแบบเอกสารมีหลากหลายมาก ผมไล่ทำไปเรื่อยๆ ตามไฟล์แนบ ช่องที่มีสีเหลือง คือมันไม่แสดงค่าไม่ตรง น่าจะเป็นเรื่องสูตรยังไม่ครอลคลุมประเด็น จึงขอรบกวนอีกรอบ ครับ

ผมก็มีการพัฒนาเหมือนกัน 55 เพราะผมเอาความรู้จากที่นี่ และของเวปที่อาจารย์เคยแนะนำ มาผสมกัน ในการลิสต์ชื่อไฟล์ และสร้าง hyperlink ไปยังไฟล์เอกสาร แต่ถ้าอาจารย์มีโปรแกรม Document Control หรือไม่ก็โปรแกรม พวกเก็บ CAR มาฝากก็ยินดี ครับ

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 9:04 pm
by godman
ผมลองทำเองได้แล้ว ครับ แต่ไม่รู้ว่า สูตรมันยาวไปหรือปล่าว อาจารย์คิดว่าไงครับ ที่เซลล์ B7 สูตร =IF(ISNUMBER(SEARCH("WI",B7,1)),LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(B7,LEN(B7)-6),"WI-",""),"0","-"),"1","-"),FIND("-",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(B7,LEN(B7)-6),"WI-",""),"0","-"),"1","-"))-1),LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(B7,LEN(B7)-3),"th-",""),"0","-"),"1","-"),FIND("-",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(B7,LEN(B7)-3),"th-",""),"0","-"),"1","-"))-1))

Re: สูตรการตัดคำ

Posted: Sat Jun 09, 2012 9:42 pm
by snasui
:D หากได้คำตอบถูกต้องก็ไม่มีปัญหาใด สามารถใช้ได้ครับ

จากไฟล์ตัวอย่างที่ A7 สามารถใช้สูตรด้านล่างนี้ได้เช่นกันครับ

=LEFT(SUBSTITUTE(SUBSTITUTE(B7,"WI-",""),"TH-",""),MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},SUBSTITUTE(SUBSTITUTE(B7,"WI-",""),"TH-","")&"0123456789"))-1)

Enter > Copy ลงด้านล่าง