: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

ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#61

Post by snasui »

:D Code ที่เขียนมายังสะเปะสะปะอยู่มากครับ การกำหนดค่าให้กับตัวแปร ควรกำหนดค่าใดค่าหนึ่งให้กับตัวแปรหนึ่ง ๆ เท่านั้นครับ

เช่น rall เมื่อกำหนดให้เท่ากับ .Range("C2") แล้ว จะไม่กำหนดตัวแปร rall ให้เท่ากับ .Range("F2") อีก ยกเว้นทำงานตามหน้าที่นั้น ๆ จบแล้ว จะกำหนดตัวแปรให้ทำงานตามหน้าที่ใหม่ เช่นนี้จึงสามารถทำได้

สิ่งที่กำลังจะทำอยู่นี้ไม่ง่ายครับ หากยังไม่เข้าใจ VBA ผมไม่แนะนำให้ใช้ VBA ครับ ควรใช้ตามที่ตัวเองสามารถเข้าใจได้ ตามที่ถามตอบกันมานั้น ผมเห็นว่ายังขาดความรู้ความเข้าใจใน VBA ที่เป็นพื้นฐานอีกมาก ควรศึกษาและทำตามคู่มือมาเป็นลำดับก่อน หากจำเป็นต้องใช้ ควรให้ผู้ที่เขียนเป็นเขียนให้ก่อน ติดตรงไหนแล้วค่อยถามกันครับ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#62

Post by suka »

ขอบคุณค่ะอาจารย์ ไว้ค่อยๆหาวิธีค่ะ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#63

Post by suka »

suka wrote:ขอรบกวนเรื่องปรับสูตรเพิ่มค่ะ

ไฟล์แนบที่ชีท Form จากเดิมเลือกวันที่เริ่มต้นเซลล์ B1 และวันที่สิ้นสุดเซลล์ D1

ให้สูตรเรียกเพิ่มเป็น

เลือกวันที่เริ่มต้นเซลล์ B1 และวันที่สิ้นสุดเซลล์ D1 และเลือกกลุ่มเอกสารที่เซลล์ E1 ค่ะ

ขอบคุณค่ะ
ขอรบกวนอาจารย์ และ ท่านผู้รู้ช่วยเรื่องการดึงข้อมูลตามเงื่อนไขด้านบนค่ะ
ตัวอย่างจากไฟล์แนบที่ชีท Database คอลัมน์ C ได้สร้างรหัสขึ้นใหม่ เพื่อจะนำมาดึงข้อมูลตามเงื่อนไขที่ต้องการค่ะ
ขอบคุณค่ะ
Attachments
Inventory.AR Code เพื่อเลือกกลุ่มเอกสาร.xls
(157.5 KiB) Downloaded 11 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#64

Post by snasui »

:D ลองตามนี้ครับ
  1. ที่ชีท Database เซลล์ C2 เปลี่ยนสูตรเป็น
    =G2&F2&D2
    Enter > Copy ลงด้านล่าง
  2. ที่ชีท Form เซลล์ A2 ปรับสูตรเป็น
    =SUMPRODUCT(--($G$1&1&$E$1=Database!$C$2:$C$65536),--($B$1<=Database!$B$2:$B$65536),--($D$1>=Database!$B$2:$B$65536),--(Database!$AD$2:$AD$65536=""))
    Enter
  3. ที่ชีท Form เซลล์ A3 ปรับสูตรเป็น
    =IF(ROWS(A$3:A3)>$A$2,"",SMALL(IF($G$1&1&$E$1=Database!$C$2:$C$1158,IF(Form!$B$1<=Database!$B$2:$B$1158,IF(Form!$D$1>=Database!$B$2:$B$1158,IF(Database!$AD$2:$AD$1158="",ROW(Database!$B$2:$B$1158)-ROW(Database!$B$2)+1)))),ROWS(B$3:B3)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#65

Post by suka »

:thup: ขอบพระคุณค่ะอาจารย์ ได้ตรงตามที่ต้องการแล้วค่ะ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#66

Post by suka »

ขอรบกวนอาจารย์อีกรอบค่ะ
เรื่องปรับสูตรที่ชีท Form เซลล์ E1 หากว่างหมายถึงให้เรียกเอกสารที่ชีท Database คอลัมน์ AD ว่างมาทั้งหมดค่ะ
ตามตัวอย่างไฟล์แนบถ้าคอลัมน์ AD ชีท Database ว่างให้ดึงมาทั้งหมดจะมี 5 รายการค่ะ
ขอบคุณค่ะ
Attachments
Inventory.AR Code เลือกกลุ่มเอกสาร.xls
(188.5 KiB) Downloaded 10 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#67

Post by snasui »

:D ควรเพิ่มเงื่อนไขในข้อ 1 ด้านบนให้เชื่อมคอลัมน์ AD เข้ามาด้วย นอกจากนี้ในชีท Form จะต้องเพิ่มเซลล์ทีระบุว่าให้นำคอลัมน์ AD มาเป็นเงื่อนไข

เช่นหากเซลล์นั้นเป็น Y แสดงว่าหากคอลัมน์ AD เป็น Y ก็ให้นำมาแสดง หากเซลล์นั้นเป็นค่าว่างก็จะหมายถึงหากคอลัมน์ AD เป็นค่าว่างก็ให้นำมาแสดงครับ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#68

Post by suka »

ขอรบกวนอาจารย์ค่ะ ชีท Database ได้เชื่อมข้อมูลตามข้อ 1 แล้วใช้เซลล์ E3 ชีท Form ระบุว่าให้นำคอลัมน์ AD มาเป็นเงื่อนไขค่ะ

ใส่สูตรที่ชีท Form เซลล์ E3

=IF(ISNUMBER(B3),LOOKUP(2,1/(Database!$AD$2:$AD$1157=$B3),Database!$AD$2:$AD$1157))

ที่ชีท Form เซลล์ E3 แสดงเป็นแบบนี้ #N/A ค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#69

Post by snasui »

:D แนบไฟล์ตัวอย่างที่ได้ Update แล้วมาด้วยครับ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#70

Post by suka »

อาจารย์คะ แนบไฟล์ตัวอย่างค่ะ
Attachments
Inventory.AR Code เลือกกลุ่มเอกสาร.xls
(192.5 KiB) Downloaded 20 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#71

Post by snasui »

:D ในชีท Form เพิ่มเซลล์ I1 เข้ามาเป็นเงื่อนไข หากกรอก Y แสดงว่าในชีท Database คอลัมน์ AD เป็น Y จึงจะนำข้อมูลมาแสดง หากว่างเปล่า แสดงว่าในชีท Database คอลัมน์ AD เป็น Y จึงจะนำข้อมูลมาแสดง

จากนั้นปรับสูตรในชีท Form ดังนี้
  1. ที่ A2 ปรับสูตรเป็น
    =SUMPRODUCT(--($G$1&1&$E$1&$I$1=Database!$C$2:$C$65536),--($B$1<=Database!$B$2:$B$65536),--($D$1>=Database!$B$2:$B$65536))
    Enter
  2. ที่ A3 ปรับสูตรเป็น
    =IF(ROWS(A$3:A3)>$A$2,"",SMALL(IF($G$1&1&$E$1&$I$1=Database!$C$2:$C$1158,IF(Form!$B$1<=Database!$B$2:$B$1158,IF(Form!$D$1>=Database!$B$2:$B$1158,ROW(Database!$B$2:$B$1158)-ROW(Database!$B$2)+1))),ROWS(B$3:B3)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
สำหรับคอลัมน์ E ของชีท Form เข้าใจสูตรนั้นหรือไม่ว่าใช้ทำอะไรครับ :?:
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#72

Post by suka »

:thup: ขอบพระคุณอาจารย์ค่ะ ได้ตรงตามต้องการแล้วค่ะ

ขอรบกวนอาจารย์เพิ่มอีกหนึ่งเงื่อนไขค่ะ
ชีท Form เซลล์ E1 ถ้าระบุชนิดเอกสารให้แสดงรายการเอกสารตามที่ระบุ
หากไม่ระบุชนิดเอกสารให้แสดงรายการเอกสารทั้งหมดตามรหัสร้านค้าที่เลือกค่ะ
ขอบพระคุณค่ะ
Attachments
Inventory.AR สูตรเลือกกลุ่มเอกสาร.xls
(188 KiB) Downloaded 16 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#73

Post by snasui »

:shock: สูตรที่เขียนมาแล้ว ไม่สามารถรองรับกับเงื่อนไขที่เพิ่มมาใหม่

เนื่องจากเดิมเป็นการดึงข้อมูลโดยใช้ E1 เป็นเงื่อนไขอยู่แล้ว ไม่ว่าจะไม่ว่างหรือว่างก็จะดึงมาตามนั้น หากบอกว่าถ้าว่างให้ดึงมาทั้งหมดจะขัดแย้งกับสูตรเดิมที่เขียนเอาไว้แล้ว หากจะทำต้องเขียนสูตรซ้อนเข้าไปซึ่งสูตรยาวมากและจะใช้ไม่ได้กับ Excel 2003 ครับ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#74

Post by suka »

ค่ะอาจารย์

หากเดิมใช้ Excel 2003 แล้วเปลี่ยนมาใช้ Excel 2007 จะมีผลต่อสูตรไฟล์เดิมไหมค่ะ

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

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#75

Post by snasui »

:D Excel Version ที่สูงกว่าย่อมรองรับ Excel Version ที่ต่ำกว่าเสมอ ดังนั้น ไม่ว่า Excel 2003 ใช้สูตรใดก็ตาม Excel รุ่นที่สูงว่าสามารถนำมาใช้ได้ครับ
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#76

Post by suka »

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

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#77

Post by suka »

เรียนอาจารย์และท่านผู้รู้ช่วยเรื่องปรับสูตรเพิ่มค่ะ

1.เนื่องจากชีท Database ที่เซลล์ C2 ดึงข้อมูลจาก G2&F2&D2 มาด้วย VBA ไม่ได้ดึงด้วยสูตร
และเซลล์ AD2 จะบันทึกทีหลัง Y ที่เซลล์ AD2 จึงไม่รับการอัพเดทที่เซลล์ C2 ค่ะ

2.ที่ชีท Form เลือกวันที่เริ่มต้นเซลล์ B1 และวันที่สิ้นสุดเซลล์ D1 และเลือกกลุ่มเอกสารที่เซลล์ E1
ก็ให้แสดงรายการเอกสารตามที่ระบุค่ะ
ขอเพิ่มอีกเงื่อนไขค่ะ ถ้าหากไม่ระบุชนิดเอกสารให้แสดงรายการเอกสารทั้งหมดตามรหัสร้านค้าที่เลือกค่ะ
snasui wrote::shock: สูตรที่เขียนมาแล้ว ไม่สามารถรองรับกับเงื่อนไขที่เพิ่มมาใหม่

เนื่องจากเดิมเป็นการดึงข้อมูลโดยใช้ E1 เป็นเงื่อนไขอยู่แล้ว ไม่ว่าจะไม่ว่างหรือว่างก็จะดึงมาตามนั้น หากบอกว่าถ้าว่างให้ดึงมาทั้งหมดจะขัดแย้งกับสูตรเดิมที่เขียนเอาไว้แล้ว หากจะทำต้องเขียนสูตรซ้อนเข้าไปซึ่งสูตรยาวมากและจะใช้ไม่ได้กับ Excel 2003 ครับ
ไฟล์แนบนี้ได้เปลี่ยนมาใช้ Excel 2007 แล้วค่ะ ขอบคุณค่ะ
Attachments
Inventory.AR สูตรเลือกกลุ่มเอกสาร.xlsm
(80.09 KiB) Downloaded 31 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#78

Post by snasui »

:D ลองตามนี้ครับ
  1. เซลล์ A2 ปรับสูตรเป็น
    =IF($E$1="",SUMPRODUCT(--($G$1=Database!$G$2:$G$65536),--(1=Database!$F$2:$F$65536),--($I$1=Database!$AD$2:$AD$65536),--($B$1<=Database!$B$2:$B$65536),--($D$1>=Database!$B$2:$B$65536)),SUMPRODUCT(--($G$1=Database!$G$2:$G$65536),--(1=Database!$F$2:$F$65536),--($E$1=Database!$D$2:$D$65536),--($I$1=Database!$AD$2:$AD$65536),--($B$1<=Database!$B$2:$B$65536),--($D$1>=Database!$B$2:$B$65536)))
    Enter
  2. เซลล์ A3 ปรับสูตรเป็น
    =IF(ROWS(A$3:A3)>$A$2,"",SMALL(IF(IF($E$1="",IF($G$1=Database!$G$2:$G$65536,IF(1=Database!$F$2:$F$65536,IF($I$1=Database!$AD$2:$AD$65536,1))),IF($G$1=Database!$G$2:$G$65536,IF(1=Database!$F$2:$F$65536,IF($E$1=Database!$D$2:$D$65536,IF($I$1=Database!$AD$2:$AD$65536,1))))),IF(Form!$B$1<=Database!$B$2:$B$65536,IF(Form!$D$1>=Database!$B$2:$B$65536,ROW(Database!$B$2:$B$65536)-ROW(Database!$B$2)+1))),ROWS(B$3:B3)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
User avatar
suka
Silver
Silver
Posts: 920
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#79

Post by suka »

:thup: ขอบพระคุณค่ะอาจารย์ ได้ผลตามที่ต้องการแล้วค่ะ

ขอรบกวนถามค่ะ Excel 2007 ต้องการปรับให้ Enter แล้วเคอร์เซอร์ไปขวา จะเข้าปรับที่เมนูไหนคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอรบกวนช่วยเรื่อง Code VBA เมื่อเทียบค่าตรงกัน

#80

Post by snasui »

:D ลองตามภาพครับ

คลิก Office Logo > Excel options แล้วกำหนดตามภาพด้านล่าง
Attachments
Enter_Right.png
Enter_Right.png (30.43 KiB) Viewed 250 times
Post Reply