PDA

View Full Version : จับคู่บางข้อความกับข้อความที่มีน่ะค่ะ



java
21 Jun 2007, 16:15
คือมีข้อมูลอยู่ และต้องการนำอีกข้อมูลหนึ่งมาใส่
แต่ข้อมูลมันเหมือนกันบางตัวน่ะค่ะ
ควรทำอย่างไรดี
อธิบายไม่เข้าใจต้องขอโทษด้วยค่ะ ยังไงรบกวนดูไฟล์แนบอีกทีน่ะค่ะ
ขอบคุณค่ะ

วานิชย์
21 Jun 2007, 16:23
ที่ B5 ใช้สูตรแบบนี้ครับ

=VLOOKUP(MID(A5,1,FIND("-",A5,1)-1),$C$17:$D$22,2,FALSE)

จากนั้นคัดลอกลงไปจนครบตามข้อมูลก็จะได้ตามต้องการครับ
:)

java
21 Jun 2007, 16:43
ขอบคุณมากค่ะ
แต่ตอนนี้มีปัญหาใหม่น่ะค่ะ
คือว่ารุ่นของสินค้าเนี่ยมันจะ export ไฟล์มาจากระบบอื่น
ทีนี้พอพิมพ์รุ่นเข้าไปในชีทนั้น ๆ เอ็กเซลก็สะกดคำให้น่ะค่ะ
เช่น พิมพ์ว่า HDA ก็จะเปลี่ยนให้เวลา enter เป็น HAD
ต้องไปกำหนดตรงไหนคะ ปกติเคยเห็นแต่ใน word
ขอบคุณค่ะ

nutty
21 Jun 2007, 16:43
ผมลองใช้วิธีแยก ชื่อ และ รหัสที่เป็นตัวเลข ของ Model ออกเป็น คอลัมน์ๆ นะครับ แล้วใช้ VLOOKUP หาโดยอ้างอิงกับ ชื่อ MODEL Name นะครับ

ไม่ทราบว่าจะตรงกับความต้องการหรือเปล่า อย่างไรผมได้แนบไฟล์ที่ลองแก้ไขมาให้ดูนะครับ

java
21 Jun 2007, 16:55
คือว่าด้วยความรีบก็เลยก๊อปสูตรไปใช้เลยน่ะค่ะ ได้ผลดีมาก ๆ แต่ว่า...
ตอนนี้ไม่เข้าใจสูตรน่ะค่ะ ยังไงช่วยอธิบายหากมีเวลาน่ะค่ะ
ขอบคุณจริง ๆ ค่ะ

วานิชย์
21 Jun 2007, 16:57
ขอบคุณมากค่ะ
แต่ตอนนี้มีปัญหาใหม่น่ะค่ะ
คือว่ารุ่นของสินค้าเนี่ยมันจะ export ไฟล์มาจากระบบอื่น
ทีนี้พอพิมพ์รุ่นเข้าไปในชีทนั้น ๆ เอ็กเซลก็สะกดคำให้น่ะค่ะ
เช่น พิมพ์ว่า HDA ก็จะเปลี่ยนให้เวลา enter เป็น HAD
ต้องไปกำหนดตรงไหนคะ ปกติเคยเห็นแต่ใน word
ขอบคุณค่ะ
ที่เมนู Tools - AutoCorrect Options… /tab AutoCorrect
ให้ unCheck ที่หน้า Replace text as you type
:)

java
22 Jun 2007, 08:32
ขอบคุณมากค่ะ แก้ได้แล้ว:D
อย่างไรก็ดี หากคุณวานิชย์มีเวลาช่วยอธิบายสูตร =VLOOKUP(MID(A5,1,FIND("-",A5,1)-1),$C$17:$D$22,2,FALSE)
ให้สักนิดนะคะ ปกติใช้สูตร vlookup กับ mid เป็นค่ะ แต่สูตร find ยังไม่เคยใช้ แล้วเอามารวม ๆ กันก็เลยงง ๆ นิดนึงน่ะค่ะ:D


และขอบคุณคุณ nutty ด้วยค่ะ:D

วานิชย์
22 Jun 2007, 09:36
จากตัวอย่างงานของคุณ JAVA มีข้อมูลที่เกี่ยวข้อง 3 ตัวคือ
MODEL
MASTER MODEL
PROJECT

โดย MASTER MODEL และ PROJECT มีความสัมพันธ์กันตามตารางในตัวอย่างของคุณ
และรหัส MODEL ก็คือ รหัส MASTER MODEL ตามด้วย รหัสอะไรบางอย่าง ซึ่งจะถูกคั่นด้วยเครื่องหมาย - เสมอ ๆ

และความต้องการของคุณ JAVA ก็คือ แสดงรายชื่อ Project ที่มีความสัมพันธ์กับ MASTER MODEL โดยใช้ รหัส MODEL เป็นตัวอ้างอิง

ถ้าพิจารณาหาความสัมพันธ์ระหว่าง รหัส MODEL กับ PROJECT จะพบว่าสามารถเชื่อมโยงกันได้ด้วย รหัส MASTER MODEL ที่อยู่ในรหัส MODEL (ข้อมูลชุดแรกหน้าเครื่องหมาย - ) นั่นเอง

ดังนั้น ถ้าเราสามารถแยกข้อมูลชุดแรกออกจากรหัส MODEL ได้ก็สามารถนำ ข้อมูลนั้นไปใช้เป็น Ref_Value ใน VLOOKUP เพื่อหา PROJECT ได้

ดังนั้น จากสูตรที่คุณ JAVA เห็น MID(A5,1,FIND("-",A5,1)-1) ในสูตร ก็เพื่อตัดเอาเฉพาะ ข้อมูลชุดแรกก่อนเครื่องหมาย - ครับ

ต่อไปขออธิบาย MID(A5,1,FIND("-",A5,1)-1)
จาก Function MID ()
ไวยากรณ์
=MID(ข้อความ,ตำแหน่งเริ่ม,จำนวนอักษร)
ดังที่กล่าวไปแล้วด้านบน เราต้องการหาข้อมูลชุดแรกก่อนเครื่องหมาย - ดังนั้น ตำแหน่งเริ่มก็ต้องเป็น 1
และจำนวนอักษรที่จะใช้ใน MID ก็คือจำนวนอักษรก่อนถึงตำแหน่งของ เครื่องหมาย -
ดังนั้นจึงต้องใช้ Function FIND() เพื่อหาตำแหน่งของเครื่องหมาย - ครับ

Function FIND()
ไวยากรณ์
=FIND(find_text,within_text,start_num)
เมื่อได้ตำแหน่งของเครื่องหมาย - มาแล้วก็นำไปใช้ใน MID แต่เราไม่ต้องการเครื่องหมาย - ให้ติดมาด้วยจึงต้องลดตำแหน่งลงอีก 1 จึงจะพบว่าในสูตรมี - 1 เพิ่มเข้ามาด้วย
เมื่อรวมทั้งหมดเข้าด้วยกันก็จะได้สูตรในการแยกเอาข้อมูลชุดแรกก่อนเครื่องหมาย - ได้เป็น
MID(A5,1,FIND("-",A5,1)-1)
ครับ
:)

java
22 Jun 2007, 12:05
:D ขอบคุณค่ะ
เข้าใจแล้ว คุณวานิชย์ใจดีจริงๆ ขอให้เจริญ ๆ ค่ะ

ถ้าเป็น model HDA-5152-52 เราก็ใช้สูตรแบบนี้ไม่ได้ใช่มั๊ยคะ เพราะมันมี "-" 2 ครั้ง
แต่ว่ามันไม่มีหรอกค่ะ แค่สงสัยเฉย ๆ น่ะค่ะ :D

วานิชย์
22 Jun 2007, 13:12
ถ้าข้อมูลที่ต้องการคือข้อมูลชุดแรกก่อนเครื่องหมาย - (ตามตัวอย่างที่ยกมาคือ HDA)ก็ไม่มีปัญหาครับ สามารถใช้สูตรเดิมได้เนื่องจาก Find จะหาตำแหน่งเครื่องหมาย - ตัวแรกเสมอ ถ้าไม่มีการระบบุ Start_num

แต่จะใช้ไม่ได้ถ้าข้อมูลที่ต้องการคือ HDA-512 ต้องปรับเปลี่ยนสูตรอีกนิดหน่อยครับ
:)