Page 1 of 1
การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 2:51 pm
by Gin R
เรียน อาจารย์และท่านผู้รู้ทุกท่านค่ะ
เนื่องจากต้องการ จับคู่ระหว่าง Units, Price ฝั่ง BID กับ Units, Price ฝั่ง OFFER
เมื่อเจออันที่แมทกันทั้ง Units และ Price ให้ย้าย ข้อมูล Units,Price,Amount,Team,Name ของทั้ง ฝั่ง BID และ OFFER ไปไว้ที่ด้าน Match
แต่ด้วยการที่หนูพึ่งจะศึกษาเกี่ยวกับ VBA ทำให้ยังไม่เข้าใจในการใช้ ฟังชั่น match ค่ะ
คอนเซป หนูคือ หนูจะใช้ฟังชั่น Match เพื่อการหาข้อมูลตำแหน่ง ที่มีข้อมูลตรงกันแล้วทำการย้ายข้อมูล ที่ตรงกันทั้งคู่ ไปไว้ในคอลัมที่ต้องการ ค่ะ (ทดลองเขียนไว้ใน Module2 Sub Move() ค่ะ)
อีกทั้งหนูยังไม่สามารถใช้ ฟังชั่น match ในการจัดการกับข้อมูลที่หลายคอลัมจึงทำให้งงๆและได้ข้อมูลไม่ตรงตามที่ต้องการค่ะ
(คอลัมZ เป็นคอลัมที่ทดลองหาตำแหน่งที่แมทกันโดย้ขอ้มูลฝั่ง BiD ตั้งต้น หาในขอ้มูลฝั่งOFFER ค่ะ)
ขอขอบคุณล่วงหน้าค่ะ
Gin R

Re: การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 2:59 pm
by bank9597
ต้องการจะใช้เป็นสูตรหรือว่า VBA ครับ
Re: การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 3:08 pm
by Gin R
ต้องขอโทษด้วยที่ถามไม่ชัดเจนค่ะ
ต้องการใช้ VBA สำหรับงานนี้ค่ะ แต่ที่ถามสูตรไปเพื่อการทำงานอย่างอื่นในอนาคตค่ะ
ขอบคุณค่ะ
Gin R
Re: การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 3:44 pm
by bank9597
Gin R wrote:ต้องขอโทษด้วยที่ถามไม่ชัดเจนค่ะ
ต้องการใช้ VBA สำหรับงานนี้ค่ะ แต่ที่ถามสูตรไปเพื่อการทำงานอย่างอื่นในอนาคตค่ะ
ขอบคุณค่ะ
Gin R
VBA ต้องเขียนมาก่อน เดี๋ยวท่านอื่นจะเข้ามาดูให้ครับ
ส่วนการใช้สูตร ลองตามนี้ดูครับ
ชีท Data เซลล์ H7 คีย์ =SUM(IF(C7=$O$7:$O$19,IF(D7=$P$7:$P$19,IF(E7=$Q$7:$Q$19,IF(F7=$R$7:$R$19,IF(G7=$S$7:$S$19,ROWS($H$7:H7),0)))))) กด Ctrl+Shift+Enter คัดลอกลงมา
ชีท Data เซลล์ T7 คีย์
=IFERROR(INDEX($H$7:$H$14,MATCH(1,IF(O7=$C$7:$C$14,IF(P7=$D$7:$D$14,IF(Q7=$E$7:$E$14,IF(R7=$F$7:$F$14,IF(S7=$G$7:$G$14,1)),0))))),"") Ctrl+Shift+Enter คัดลอกลงมา
จะได้ข้อมูลที่ Match กัน
ลองใช้การ Filter แล้วคัดลอกข้อมูลที่ได้ไปวางที่ที่กำหนดไว้ หากจะใช้สูตรดึงไปวาง ค่อยมาตั้งคำถามต่อครับ
ปล ตัวเลขที่ได้จากสูตรไม่สามารถ Filter ได้ ต้องคัดลอก แล้ววางค่าไว้ที่เดิมก่อนเสมอก่อนทำการ Filter
Re: การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 3:46 pm
by snasui

ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Test()
Dim rAllBid As Range, rBid As Range
Dim rAllOffer As Range, rOffer As Range
Dim rtBid As Range, rtOffer As Range
With Sheets("Data")
Set rAllBid = .Range("C7", .Range("C" & Rows.Count).End(xlUp))
Set rAllOffer = .Range("O7", .Range("O" & Rows.Count).End(xlUp))
For Each rBid In rAllBid
For Each rOffer In rAllOffer
If rBid = rOffer And rBid.Offset(0, 1) = rOffer.Offset(0, 1) Then
Set rtBid = .Range("AB" & Rows.Count).End(xlUp).Offset(1, 0)
Set rtOffer = .Range("AN" & Rows.Count).End(xlUp).Offset(1, 0)
rBid.Resize(1, 5).Copy rtBid
rOffer.Resize(1, 5).Copy rtOffer
End If
Next rOffer
Next rBid
End With
End Sub
Re: การแมทข้อมูลหลายคอลัม
Posted: Wed Nov 14, 2012 5:59 pm
by Gin R
ขอบคุณ คุณ GURU ค่ะ แต่ขอทำความเข้าใจกับสูตรที่ให้มาก่อนนะค่ะยังงงๆอยู่เลยค่ะ
ขอบคุณมากค่ะอาจารย์ หนูได้นำไปปรับใช้แต่ยังติดตรงที่ว่าผลที่ได้มันไม่ค่อยสเถียรค่ะ
บางทีก็จับคู่ BID OFFER ได้ถูกต้อง แต่บางทีก็ผิด บางทีก็ได้ข้อมูลไม่เป็นคู่ แต่กลายเป็น BID 1ข้อมูลต่อ OFFER ข้อมูลที่เหมือนกันกับฝั่งBIDทั้งหมด
ตอนนี้หนูกำลังหาอยู่ว่าผิดตรงไหน ค่ะ