Page 1 of 1
สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 11:59 am
by sakajohn
ผมใช้สูตรคำนวน VLOOKUP($H$7,MyDatabase,13,0) ในชีท ออกใบเสนอราคา โดยให้ดูค่าว่า ถ้าตรงกับเลขที่เอกสาร ในคอลัมภ์ A ของชีท MyDatabase แล้วให้กลับมาแสดงค่าที่ ชีท ออกใบเสนอราคา
1. *ปัญหาคือ ถ้าเราไม่เติมข้อมูล ในตาราง ค่าที่ส่งกลับไปที่ ชีทออกใบเสนอราคา จะเป็นเลข 0 ผมอยากให้เป็นช่องว่างเฉยๆ จะต้องเขียนสูตรอย่างไรครับ
2. ในช่อง row 5 จะใช้ในการกรอกข้อมูล (เป็น MasterRecord) เมื่อกรอกข้อมูลครบ กดปุ่ม ค่าก็จะมาบันทึกใน Mydatabase ต่อลำดับลงมา ปํญหาคือ ถ้าต้องการให้แถว A5 ถึงU5 ต้องมีข้อมูลถึงจะกดบันทึกค่าได้ ถ้าขาดช่องใดช่องหนึ่ง จะไม่สามารถกดปุ่มบันทึกได้ ตอนนี้ไม่มีค่าอะไรก็สามารถกดบันทึกได้ครับ
3. ผมไม่ต้องการให้ แก้ไขข้อมูลใน MyDatabase ได้ แต่ถ้าเรา Lock ก็จะไม่สามารถอัพเดทข้อมูล จาก Masterrecord ลงMyDatabaseได้ มีวีอย่างไรบ้าง
4. ตรงช่องเลขที่เอกสาร ผมตั้งค่าให้ RunNumber อัตโนมัติโดยใช้สูตร "CPC"&TEXT(B5,"yy")&"-"&TEXT(NOW(),"mm")&"-"&TEXT(ROWS($B$5:B5),"000") ถ้าต้องการให้เมื่อขึ้นเดือนใหม่เลขจะกลับไป รัน ที่ 001 ใหม่ จะทำได้ไหมครับ
ผมแนบไฟล์มาด้วยครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 12:32 pm
by snasui
sakajohn wrote:ผมใช้สูตรคำนวน VLOOKUP($H$7,MyDatabase,13,0) ในชีท ออกใบเสนอราคา โดยให้ดูค่าว่า ถ้าตรงกับเลขที่เอกสาร ในคอลัมภ์ A ของชีท MyDatabase แล้วให้กลับมาแสดงค่าที่ ชีท ออกใบเสนอราคา
1. *ปัญหาคือ ถ้าเราไม่เติมข้อมูล ในตาราง ค่าที่ส่งกลับไปที่ ชีทออกใบเสนอราคา จะเป็นเลข 0 ผมอยากให้เป็นช่องว่างเฉยๆ จะต้องเขียนสูตรอย่างไรครับ

สามารถปรับสูตรตาม
ตัวอย่างด้านล่างครับ
=IF(VLOOKUP($H$7,MyDatabase,10,0)=0,"",VLOOKUP($H$7,MyDatabase,10,0))
sakajohn wrote:2. ในช่อง row 5 จะใช้ในการกรอกข้อมูล (เป็น MasterRecord) เมื่อกรอกข้อมูลครบ กดปุ่ม ค่าก็จะมาบันทึกใน Mydatabase ต่อลำดับลงมา ปํญหาคือ ถ้าต้องการให้แถว A5 ถึงU5 ต้องมีข้อมูลถึงจะกดบันทึกค่าได้ ถ้าขาดช่องใดช่องหนึ่ง จะไม่สามารถกดปุ่มบันทึกได้ ตอนนี้ไม่มีค่าอะไรก็สามารถกดบันทึกได้ครับ
สามารถใช้ Code ตรวจสอบว่า A5:U5 มีข้อมูลครบทุกช่องหรือไม่ การเขียน Code จะต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบน ติดแล้วค่อยถามกันต่อครับ
sakajohn wrote:3. ผมไม่ต้องการให้ แก้ไขข้อมูลใน MyDatabase ได้ แต่ถ้าเรา Lock ก็จะไม่สามารถอัพเดทข้อมูล จาก Masterrecord ลงMyDatabaseได้ มีวีอย่างไรบ้าง
ทำการป้องกันข้อมูล กรณีเราบันทึกด้วย Code ให้ใช้ Code ปลดการป้องกันก่อน แล้วค่อยบันทึก จากนั้นให้ทำการป้องกันด้วย Code อีกครั้ง
sakajohn wrote:4. ตรงช่องเลขที่เอกสาร ผมตั้งค่าให้ RunNumber อัตโนมัติโดยใช้สูตร "CPC"&TEXT(B5,"yy")&"-"&TEXT(NOW(),"mm")&"-"&TEXT(ROWS($B$5:B5),"000") ถ้าต้องการให้เมื่อขึ้นเดือนใหม่เลขจะกลับไป รัน ที่ 001 ใหม่ จะทำได้ไหมครับ
ช่วยยกตัวอย่างข้อมูลให้เห็นว่าขึ้นเดือนใหม่แล้วจะได้ค่าเลขที่เอกสารเป็นค่าใด ไม่จำเป็นต้องเขียนมาเป็นสูตร อธิบายถึงปัญหา เป้าหมายที่ต้องการมาก็เพียงพอ การเขียนสูตรลงไปในฐานข้อมูลเป็นสิ่งที่ไม่ควรทำ ควรใช้ Code ในการจัดการเพื่อให้เป็นค่าคงที่ครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 12:47 pm
by sakajohn
sakajohn เขียน:
4. ตรงช่องเลขที่เอกสาร ผมตั้งค่าให้ RunNumber อัตโนมัติโดยใช้สูตร "CPC"&TEXT(B5,"yy")&"-"&TEXT(NOW(),"mm")&"-"&TEXT(ROWS($B$5:B5),"000") ถ้าต้องการให้เมื่อขึ้นเดือนใหม่เลขจะกลับไป รัน ที่ 001 ใหม่ จะทำได้ไหมครับ
ช่วยยกตัวอย่างข้อมูลให้เห็นว่าขึ้นเดือนใหม่แล้วจะได้ค่าเลขที่เอกสารเป็นค่าใด ไม่จำเป็นต้องเขียนมาเป็นสูตร อธิบายถึงปัญหา เป้าหมายที่ต้องการมาก็เพียงพอ การเขียนสูตรลงไปในฐานข้อมูลเป็นสิ่งที่ไม่ควรทำ ควรใช้ Code ในการจัดการเพื่อให้เป็นค่าคงที่ครับ
ตัวอย่างคือ รหัสเอกสารที่ผมใช้คือ CPC14-07-001 14คือปี 2014 07คือเดือน ครับ 001 รันเลขไปเรื่อยๆ ผมต้องการให้ เมื่อเดือนเปลี่ยน เช่น จาก 07 เป็น 08 ให้เริ่มรันเลข 001 ใหม่ครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 1:16 pm
by snasui
sakajohn wrote:ตัวอย่างคือ รหัสเอกสารที่ผมใช้คือ CPC14-07-001 14คือปี 2014 07คือเดือน ครับ 001 รันเลขไปเรื่อยๆ ผมต้องการให้ เมื่อเดือนเปลี่ยน เช่น จาก 07 เป็น 08 ให้เริ่มรันเลข 001 ใหม่ครับ

เดือนที่เปลี่ยนหมายถึงเดือนของวันที่ในคอลัมน์ B เช่นด้านล่างใช่หรือไม่
หาก B8 เป็น 7/7/2014 ,A8 ต้องการให้เป็น CPC14-07-001
หาก B9 เป็น 11/7/2014, A9 ต้องการให้เป็น CPC14-07-002
หาก B10 เป็น 1/
8/2014, A10 ต้องการให้เป็น CPC14-0
8-00
1
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 1:36 pm
by sakajohn
ใช่ครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 1:42 pm
by snasui

ลองตามนี้ครับ
เซลล์ A8 คีย์
=TEXT(B8,"CPCYY-MM-")&TEXT(SUMPRODUCT(--(TEXT(B$8:B8,"YYMM")=TEXT(B8,"YYMM"))),"000")
Enter > Copy ลงด้านล่าง
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 1:48 pm
by sakajohn
snasui wrote:sakajohn wrote:ตัวอย่างคือ รหัสเอกสารที่ผมใช้คือ CPC14-07-001 14คือปี 2014 07คือเดือน ครับ 001 รันเลขไปเรื่อยๆ ผมต้องการให้ เมื่อเดือนเปลี่ยน เช่น จาก 07 เป็น 08 ให้เริ่มรันเลข 001 ใหม่ครับ

เดือนที่เปลี่ยนหมายถึงเดือนของวันที่ในคอลัมน์ B เช่นด้านล่างใช่หรือไม่
หาก B8 เป็น 7/7/2014 ,A8 ต้องการให้เป็น CPC14-07-001
หาก B9 เป็น 11/7/2014, A9 ต้องการให้เป็น CPC14-07-002
หาก B10 เป็น 1/
8/2014, A10 ต้องการให้เป็น CPC14-0
8-00
1
คือตอนนี้ผมเขียนคำสั่ง มาโคร ครับ คือให้เติมค่าใน row 5(MasterRecord) โดยกำหนดให้เลขที่เอกสาร รัน อัตโนมัติครับ เมื่อกดปุ่มบันทึกก็ให้ค่า ลงมาใส่ใน MyDatabase โดยให้เรียงต่อมาเรื่อยๆครับ
โดยผมกำหนดค่าไว้ที่ช่อง A5 ที MasterRecord ว่า "CPC"&TEXT(B5,"yy")&"-"&TEXT(NOW(),"mm")&"-"&TEXT(
ROWS($B$5:B5),"000") เมื่อกดปุ่มบันทึกข้อมูลก็จะรันเองลงมาเรื่อยๆครับ
โดยสูตรนี้อ้างอิงกับ คำสั่ง TODAY() ในช่อง B5 ครับ ที่ผมต้องการคือ ถ้าเดือนเปลี่ยน ให้เริ่มรันเลขที่ 001 ใหม่ครับ ผมลองเปลี่ยนเปลี่ยนสูตรนับจากการใช้ฟังก์ชั่น
ROWS($B$5:B9) เป็น
SUMPRODUCT(--(MONTH($B$8:$B$9)=MONTH(B5)))+1,"000" พอกดปุ่มบันทึกมันกลับไม่รันเลขเลยครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 1:56 pm
by snasui

ผมไม่จำเป็นต้องทราบว่าคุณเขียนสูตรหรือใครเขียนสูตรให้คุณไว้อย่างไร แต่ต้องการทราบว่าคุณต้องการผลลัพธ์เป็นอย่างไร จากข้อมูลใด แนบไฟล์มาใหม่ แล้วชี้ให้เห็นว่าบรรทัดใดข้อมูลเดิมเป็นอย่างไร ต้องการให้เป็นอย่างไร
พร้อมแนบ Macro มาด้วยจะได้ดูต่อไปจากนั้นครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 2:38 pm
by sakajohn
snasui wrote:
ผมไม่จำเป็นต้องทราบว่าคุณเขียนสูตรหรือใครเขียนสูตรให้คุณไว้อย่างไร แต่ต้องการทราบว่าคุณต้องการผลลัพธ์เป็นอย่างไร จากข้อมูลใด แนบไฟล์มาใหม่ แล้วชี้ให้เห็นว่าบรรทัดใดข้อมูลเดิมเป็นอย่างไร ต้องการให้เป็นอย่างไร
พร้อมแนบ Macro มาด้วยจะได้ดูต่อไปจากนั้นครับ
ขอโทษด้วยครับ ผมแนบไฟล์มาให้ใหม่ครับ รายละเอียดอยู่ในไฟล์แนบครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 2:55 pm
by snasui

สิ่งที่คุณต้องการคือให้เซลล์ A5 สร้างลำดับเลขที่เอกสารถัดไป โดยดูว่าหากเซลล์ B1 เป็นเดือนใหม่ ก็ให้เริ่ม Running Number ลงท้ายด้วย 001 ใหม่
เซลล์ A5 คีย์สูตรตามด้านล่าง
=TEXT(B5,"CPCYY-MM-")&TEXT(SUMPRODUCT(--(TEXT(B$8:B$
1000,"YYMM")=TEXT(B5,"YYMM")))+1,"000")
และปรับ Code เป็นตามด้านล่าง
Code: Select all
Sub AddData()
'
' AddData Macro
'
' Keyboard Shortcut: Ctrl+Shift+S
'
If Application.CountA(Range("c5:u5")) = 0 Then
MsgBox "Please check you data"
Exit Sub
Else
Application.Goto Reference:="MasterRecord"
Selection.Copy
Application.Goto Reference:="Ulmydatabse"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
ActiveSheet.Paste
Range("C5:CT5").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("C5").Select
End Sub
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 4:14 pm
by sakajohn
ฟ้อง Complier ERROR ว่า BLOCK IF WITH OUT END IF ครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Fri Jul 11, 2014 4:25 pm
by sakajohn
ได้แล้วครับ ผมเพิ่ม end if เข้าไป ขอบคุณมากครับ ผมมือใหม่อยากลองทำครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Sat Jul 12, 2014 11:40 am
by วังวู ช่ง
ขอบคุณมากครับ
Re: สอบถามการใช้คำสั่ง Vlookup ครับ
Posted: Sat Jul 12, 2014 12:01 pm
by snasui

ใน snasui.com มี Link ที่เกี่ยวข้องกับคำถามนี้จำนวนมาก ไม่จำเป็นต้องยกมาจากที่อืน นอกจากนี้ Link ที่ยกมาไม่เกียวกับ Vlookup กรณีตอบเสริมควรตอบให้ตรงประเด็น ควรมีการอธิบายเพิ่มเติมประกอบ ไม่เช่นนั้นผมจะลบความเห็นทิ้งครับ