: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

ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน"

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#21

Post by snasui »

:D ลองตามไฟล์แนบครับ

ที่ชีท Enterthedata

1. เซลล์ E1 คีย์สูตร

=INDEX(Supplier_ID,MATCH(E2,Company_Name,0))

Enter

2. เซลล์ C4 เป็นการใช้ Vadation จากชื่อ SubGroup โดยกำหนดสูตรให้กับชื่อเป็น

=OFFSET(Products!$B$2,MATCH(Enterthedata!$B4,Products!$A$2:$A$15,0)-1,0,COUNTIF(Products!$A$2:$A$15,Enterthedata!$B4))

3. เซลล์ H4 ดึงข้อมูลขนาดบรรจุมาใช้

=IF(G4<>"",INDEX(INDEX(Products!$D$18:$P$28,0,MATCH(G4,Products!$D$17:$P$17,0)),MATCH(E4,Products!$C$18:$C$28,0)),"")

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

ที่ชีท Products ช่วงเซลล์ A17:P28 ผมทำตัวอย่างสำหรับการกำหนดขนาดบรรจุเพื่อให้ง่า่ยต่อการใช้สูตรสำหรับดึงค่าบรรจุไปใช้
You do not have the required permissions to view the files attached to this post.
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#22

Post by suka »

อาจารย์คะ ขออนุญาตรับไฟล์ตัวอย่างนะคะ

ขอบพระคุณมากค่ะ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#23

Post by suka »

อาจารย์ค่ะ ขอความช่วยเหลือ

ที่ชีท Enterthedata

1.ใช้สูตร VLOOKU ในการดึงค่า เพราะใช้เป็นแค่ VLOOKU ค่ะ อาจารย์เห็นว่ามีสูตรอื่นที่น่านำมาใช้มากกว่ามั้ยคะ

2.เซลล์ C4 ที่ Drop Down List เลือก SubGroup ถ้าจะให้โชว์รหัสสินและชื่อสินค้า ไม่ทราบว่าสามารถทำได้มั้ยคะ

3.ขอรบกวนอาจารย์ค่ะ 3.1 ที่ปุ่ม Record ถ้าบันทึกแล้วไม่บันทึกซ้ำ หรือ ย้อนกลับเพื่อยกเลิก

3.2 เซลล์ C12 จะขอเพิ่มหมายเหตุบันทึกในชีท Database ได้มั้ยคะ

3.3 ให้ระบบถาม password ได้มั้ยคะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#24

Post by snasui »

:D ตอบแต่ละข้อดังนี้นะครับ

1. ถ้าใช้ Vlookup แล้วไม่มีปัญหาใดก็สามารถใช้ได้ไม่จำเป็นต้องเปลี่ยนครับ

2. ถ้าจะให้โชว์รหัสสินค้าและชื่อจะต้องนำทั้งสองค่านั้นมาต่อกันก่อนครับ เช่นอาจจะเปิดอีก 1 คอลัมน์แล้วนำ 2 ค่านั้นมาต่อกันแล้วนำค่านี้ไปใช้ใน Validation

3.1 การไม่ให้บันทึกค่าซ้ำจะต้องบอกให้โปรแกรมทราบว่ามีค่านั้นอยู่แล้วไม่ทราบว่าต้องการใช้ค่าใดในการตรวจสอบครับ

3.2 การเพิ่มหมายเหตุหรือเพิ่มข้อมูลอื่นสามารถทำได้เสมอ ช่วยออกแบบมาด้วยครับว่าหมายเหตุอยู่ในเซลล์ใด

3.3 ให้ระบบถาม Password สามารถทำได้ครับ ไม่ทราบว่าต้องการให้ถามในตอนไหนครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#25

Post by suka »

3.2 การเพิ่มหมายเหตุหรือเพิ่มข้อมูลอื่นสามารถทำได้เสมอ ช่วยออกแบบมาด้วยครับว่าหมายเหตุอยู่ในเซลล์ใด

หมายถึง ที่เซลล์ C12 ที่ชีท Enterthedata นะค่ะ ถ้าเรามีพิมพ์ข้อใดๆ ในเซลล์ C12 ก็จะบันทึกที่ Database ถ้าเราไม่พิมพ์ ก็ไม่มีการบันทึก

3.3 ให้ระบบถาม Password สามารถทำได้ครับ ไม่ทราบว่าต้องการให้ถามในตอนไหนครับ

หมายถึง ตั้งใส่รหัสให้ไฟล์งานนี้นะค่ะ เหมือนการ Login เวบ snasui ถ้าไม่มีรหัสไม่สามารถเปิดไฟล์งานนี้ได้ค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#26

Post by snasui »

:D 1. กรณีให้กรอก Password ตอนเปิดไฟล์ลองตามนี้ครับ

เข้าเมนู Tools > Options > Security > ในช่อง Password to open: กรอก Password ตามต้องการ

2. สำหรับการเพิ่มหมายเหตุและตรวจสอบค่าซ้ำผมปรับ Code ให้แล้ว สำหรับการตรวจสอบค่าซ้ำผมให้ตรวจจาก PO.No ดูไฟล์แนบประกอบครับ
You do not have the required permissions to view the files attached to this post.
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#27

Post by suka »

อาจารย์ ตอบไวมากเลยค่ะ

ขออนุญาตรับไฟล์ตัวอย่างนะคะ

ขอบพระคุณมากค่ะ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#28

Post by suka »

อาจารย์คะ

กดที่ปุ่ม Record ที่ชีท Enterthedata จะขึ้นข้อความ ยังไม่ได้ถูกเซ็นชื่อแบบดิจิทัล

และก็มีการบันทึกในชีท Database ด้วนนะค่ะ ไม่ทราบต้องแก้ที่จุดไหนคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#29

Post by snasui »

:D ลองดูการกำหนด Security ครับ โดยเข้าเมนู Tools > Macro > Security ถ้ากำหนดเป็น Low ปกติจะไม่ถูกถามเกี่ยวกับความปลอดภัยอีกครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#30

Post by suka »

อาจารย์คะ

แก้ได้แล้วค่ะ สามารถบันทึกในชีท Database เรียบร้อยค่ะ

ขอบพระคุณมากค่ะ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#31

Post by suka »

อาจารย์คะ ขอรบกวนถามและขอคำแนะนำเพิ่มเติมค่ะ

:lol: ผลการใช้งานดีแต่มีติดขัดนิดหน่อยค่ะ ที่ชีท Enterthedata
1. ถ้าเรากด Record บันทึกข้อมูล และเมื่อคีย์ PO.No.ใหม่แล้ว ที่เซลล์ B4:L10 จะทำยังไงให้ว่างเพื่อรับข้อมูลใหม่คะ
2.การแชร์ไฟล์ ใช้สมุดงานร่วมกัน บางทีต้องการแก้ไขอะไรบางจุดเหมือนจะแก้ไม่ได้
คิดจะยกเลิกการแชร์ไฟล์ชั่วคราวก่อน แต่มีข้อความเตือนเอาสมุดงานออกจากการใช้ร่วมกัน ประวัติการเปลียนแปลงจะถูกลบ
พอมีวิธีป้องกันไฟล์งานถูกลบมั้ยคะ :roll:

ขอบพระคุณมากค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#32

Post by snasui »

:D Copy Code นี้แทน Code เดิมครับ หรือแทรกบรรทัดที่ 3 นับจากด้านล่างของ Code ด้านล่างนี้ไว้ใน Code เดิมครับ

การเข้าไปยัง Code เดิมให้ทำดังนี้ครับ

กดแป้น Alt+F8 > เลือก PasteData > คลิก Edit

Code: Select all

Option Explicit

Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
    Application.ScreenUpdating = False
    i = Worksheets("Enterthedata").Range("C15")
    With Worksheets("Template")
        Set rs = .Range(.Range("A2"), .Range("R" & i + 1))
    End With
    Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    If Worksheets("Enterthedata").Range("C16") = True Then
        MsgBox "Please check your data. This transaction already recorded."
        Exit Sub
    End If
    rs.Copy: rt.PasteSpecial xlPasteValues
    MsgBox "Record Complete"
    Application.CutCopyMode = False
    Sheets("Enterthedata").Range("B4:D10, F4:G10").ClearContents
    Application.ScreenUpdating = True
End Sub
:mrgreen:
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#33

Post by snasui »

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

ผมปรับสูตรใหม่ในคอลัมน์ C และปรับ VBA Code ให้ใหม่ตามด้านล่าง

Code: Select all

Option Explicit

Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
    Application.ScreenUpdating = False
    i = Worksheets("Enterthedata").Range("C16")
    With Worksheets("Template")
        Set rs = .Range(.Range("A2"), .Range("R" & i + 1))
    End With
    Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    If Worksheets("Enterthedata").Range("C16") = True Then
        MsgBox "Please check your data. This transaction already recorded."
        Exit Sub
    End If
    If Worksheets("Enterthedata").Range("B4") = "" Then
        MsgBox "Your data is empty. Fill your data and click record button again."
        Exit Sub
    End If
    rs.Copy: rt.PasteSpecial xlPasteValues
    MsgBox "Record Complete"
    Application.CutCopyMode = False
    Sheets("Enterthedata").Range("B4:B11,D4:D11, E4:F11").ClearContents
    Application.ScreenUpdating = True
End Sub
Note: เนื่องจากข้อมูลในไฟล์แนบไม่สามารถเปิดเผยได้ ขอลบไฟล์แนบออกไปครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#34

Post by suka »

ขอบพระคุณอาจารย์มากค่ะ

:flw: ขอบคุณในความเสียสละเวลาตอบยามค่มืด เวลาขณะตอบนี้ก็หลังเที่งคืน

ขอบพระคุณมากๆๆ :oops:
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#35

Post by suka »

ขอบพระคุณอาจารย์มากค่ะ

ขอบคุณในความเสียสละเวลาตอบยามค่ำมืด เวลาขณะตอบนี้ก็หลังเที่ยงคืน

ขอบพระคุณมากๆๆ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#36

Post by suka »

ขอบคุณนะคะ อาจารย์

:rz: ที่ช่วยแก้ปัญหาให้ทุกปัญหาคลีคลาย ทุกคำถามได้รับคำตอบ สามารถช่วยแก้ปัญหาได้ยอดเยี่ยมค่ะ
ขอแจ้งผลการใช้งาน ใช้ได้ดีค่ะ

ขอบพระคุณอาจารย์มากค่ะ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#37

Post by suka »

อาจารย์คะ ขอรบกวนถามและขอคำแนะนำเพิ่มค่ะ

รหัสสินค้า และ สินค้าเดียวกัน ราคาแต่ละร้านค้าต่างกัน จะทำอย่างไงให้ ชีท Enterthedata ในคอลัมน์ J ( Unit Price )
สามารถใช้สูตรดึงค่า Unit Price ของแต่ละ Supplier ไปใช้ได้ถูกต้องคะ
ไม่ทราบว่าต้องแทรกคอลัมน์ หรือเพิ่มชีทใดบ้างค่ะ

ขอบคุณนะค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#38

Post by snasui »

:D ส่งตัวอย่างมาให้ด้วยครับ :)
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#39

Post by suka »

อาจารย์คะ ส่งตัวอย่างค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

#40

Post by snasui »

:D จากตัวอย่างที่ส่งมา ผมอ่านแล้วเข้าใจว่าต้องการดึงค่า Discount จากชีทตัวอย่างมาแสดงในคอลัมน์ K ของชีท Enterthedata ไม่ใช่ค่า UnitPrice เพราะว่าค่า UnitPrice ไม่ได้แยกราย Suplier ถ้าผมเข้าใจถูกต้องที่ชีท Enterthedata เซลล์ K4 คีย์

=IF(ISBLANK($D4)," ",INDEX(ตัวอย่างค่ะ!$E$2:$K$9,MATCH($D4,ตัวอย่างค่ะ!$B$2:$B$9,0),MATCH($D$2,ตัวอย่างค่ะ!$E$1:$K$1,0)))

จะเป็นการดึงข้อมูลส่วนลดของ เอส แอล (ค่าในเซลล์ D2) มาแสดง หากยังไม่ใช่คำตอบ ช่วยแสดงคำตอบที่ถูกต้องมาให้ด้วยครับ :)
Post Reply