:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถามการใช้คำสั่ง Vlookup ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

สอบถามการใช้คำสั่ง Vlookup ครับ

#1

Post 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 ใหม่ จะทำได้ไหมครับ

ผมแนบไฟล์มาด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#2

Post by snasui »

sakajohn wrote:ผมใช้สูตรคำนวน VLOOKUP($H$7,MyDatabase,13,0) ในชีท ออกใบเสนอราคา โดยให้ดูค่าว่า ถ้าตรงกับเลขที่เอกสาร ในคอลัมภ์ A ของชีท MyDatabase แล้วให้กลับมาแสดงค่าที่ ชีท ออกใบเสนอราคา
1. *ปัญหาคือ ถ้าเราไม่เติมข้อมูล ในตาราง ค่าที่ส่งกลับไปที่ ชีทออกใบเสนอราคา จะเป็นเลข 0 ผมอยากให้เป็นช่องว่างเฉยๆ จะต้องเขียนสูตรอย่างไรครับ
:D สามารถปรับสูตรตามตัวอย่างด้านล่างครับ

=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 ในการจัดการเพื่อให้เป็นค่าคงที่ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#3

Post 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 ใหม่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#4

Post by snasui »

sakajohn wrote:ตัวอย่างคือ รหัสเอกสารที่ผมใช้คือ CPC14-07-001 14คือปี 2014 07คือเดือน ครับ 001 รันเลขไปเรื่อยๆ ผมต้องการให้ เมื่อเดือนเปลี่ยน เช่น จาก 07 เป็น 08 ให้เริ่มรันเลข 001 ใหม่ครับ
:D เดือนที่เปลี่ยนหมายถึงเดือนของวันที่ในคอลัมน์ B เช่นด้านล่างใช่หรือไม่ :?:

หาก B8 เป็น 7/7/2014 ,A8 ต้องการให้เป็น CPC14-07-001
หาก B9 เป็น 11/7/2014, A9 ต้องการให้เป็น CPC14-07-002
หาก B10 เป็น 1/8/2014, A10 ต้องการให้เป็น CPC14-08-001
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#5

Post by sakajohn »

ใช่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#6

Post by snasui »

:D ลองตามนี้ครับ

เซลล์ A8 คีย์

=TEXT(B8,"CPCYY-MM-")&TEXT(SUMPRODUCT(--(TEXT(B$8:B8,"YYMM")=TEXT(B8,"YYMM"))),"000")

Enter > Copy ลงด้านล่าง
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#7

Post by sakajohn »

snasui wrote:
sakajohn wrote:ตัวอย่างคือ รหัสเอกสารที่ผมใช้คือ CPC14-07-001 14คือปี 2014 07คือเดือน ครับ 001 รันเลขไปเรื่อยๆ ผมต้องการให้ เมื่อเดือนเปลี่ยน เช่น จาก 07 เป็น 08 ให้เริ่มรันเลข 001 ใหม่ครับ
:D เดือนที่เปลี่ยนหมายถึงเดือนของวันที่ในคอลัมน์ B เช่นด้านล่างใช่หรือไม่ :?:

หาก B8 เป็น 7/7/2014 ,A8 ต้องการให้เป็น CPC14-07-001
หาก B9 เป็น 11/7/2014, A9 ต้องการให้เป็น CPC14-07-002
หาก B10 เป็น 1/8/2014, A10 ต้องการให้เป็น CPC14-08-001
คือตอนนี้ผมเขียนคำสั่ง มาโคร ครับ คือให้เติมค่าใน 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" พอกดปุ่มบันทึกมันกลับไม่รันเลขเลยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#8

Post by snasui »

:lol: ผมไม่จำเป็นต้องทราบว่าคุณเขียนสูตรหรือใครเขียนสูตรให้คุณไว้อย่างไร แต่ต้องการทราบว่าคุณต้องการผลลัพธ์เป็นอย่างไร จากข้อมูลใด แนบไฟล์มาใหม่ แล้วชี้ให้เห็นว่าบรรทัดใดข้อมูลเดิมเป็นอย่างไร ต้องการให้เป็นอย่างไร พร้อมแนบ Macro มาด้วยจะได้ดูต่อไปจากนั้นครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#9

Post by sakajohn »

snasui wrote::lol: ผมไม่จำเป็นต้องทราบว่าคุณเขียนสูตรหรือใครเขียนสูตรให้คุณไว้อย่างไร แต่ต้องการทราบว่าคุณต้องการผลลัพธ์เป็นอย่างไร จากข้อมูลใด แนบไฟล์มาใหม่ แล้วชี้ให้เห็นว่าบรรทัดใดข้อมูลเดิมเป็นอย่างไร ต้องการให้เป็นอย่างไร พร้อมแนบ Macro มาด้วยจะได้ดูต่อไปจากนั้นครับ
ขอโทษด้วยครับ ผมแนบไฟล์มาให้ใหม่ครับ รายละเอียดอยู่ในไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#10

Post by snasui »

:D สิ่งที่คุณต้องการคือให้เซลล์ 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
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#11

Post by sakajohn »

ฟ้อง Complier ERROR ว่า BLOCK IF WITH OUT END IF ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#12

Post by sakajohn »

ได้แล้วครับ ผมเพิ่ม end if เข้าไป ขอบคุณมากครับ ผมมือใหม่อยากลองทำครับ
วังวู ช่ง
Silver
Silver
Posts: 811
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#13

Post by วังวู ช่ง »

ขอบคุณมากครับ
Last edited by วังวู ช่ง on Sat Jul 12, 2014 12:25 pm, edited 1 time in total.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการใช้คำสั่ง Vlookup ครับ

#14

Post by snasui »

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