snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Ueng999
Member
Posts: 87 Joined: Thu Mar 14, 2013 1:36 pm
Excel Ver: Version 2301, 365
#1
Post
by Ueng999 » Fri May 17, 2013 11:51 pm
ต้องการให้เมื่อ คลิก CommandButton.1 ให้หาวันที่ในเชลล์ A2:A30 ที่ตรงกับเชลล์ B1 และให้วันที่และเวลาปัจจุบันขึ้นที่เชลล์ D ในแถวที่วันที่ตรงกับเชลล์ B
และบันทึกทันที
15/5/2013
16/5/2013
17/5/2013 ________________________17/5/2013 23:37
18/5/2013
19/5/2013
20/5/2013
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31256 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Fri May 17, 2013 11:57 pm
Code ที่เขียนมาเองแล้วชื่ออะไร ติดที่บรรทัดใดครับ
Ueng999
Member
Posts: 87 Joined: Thu Mar 14, 2013 1:36 pm
Excel Ver: Version 2301, 365
#3
Post
by Ueng999 » Sat May 18, 2013 10:28 am
ลำดับการทำงานที่ต้องการค่ะ
1.คลิกที่ บันทึก
2.ค้นหาวันที่จาก ช่วงเซลล์ A2:A9 ที่มีค่าเท่ากับเซลล์ A1(ไม่ทราบว่าจะต้องใช้ Code อะไรคะ)
3.จากไฟล์แนบช่วงเซลล์ที่มีวันที่ตรงกับเซลล์ A1 คือเซลล์ A4
4.ให้วันที่และเวลาปัจจุบันปรากฏขึ้นที่เซลล์ D แถวที่ตรงกับเซลล์ A4 ก็คือเซลล์ D4
5.บันทึก
Code: Select all
Private Sub CommandButton1_Click()
MsgBox "ºÑ¹·Ö¡àÇÅÒà¢éÒ§Ò¹"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=IF(R1C2=RC1,NOW())"
ThisWorkbook.Save
End Sub
You do not have the required permissions to view the files attached to this post.
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#4
Post
by joo » Sat May 18, 2013 11:11 am
หากต้องการเพียงแค่ค้นหาวันที่ที่ตรงกับเซลล์ A1 คิดว่าใช้สูตรในการค้นหาก็น่าจะเพียงพอครับ ที่ D2 คีย์ =INDEX($A$2:$A$9,MATCH($A$1,$A$2:$A$9,0))
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#5
Post
by joo » Sat May 18, 2013 1:10 pm
Ueng999 wrote: 4.ให้วันที่และเวลาปัจจุบันปรากฏขึ้นที่เซลล์ D แถวที่ตรงกับเซลล์ A4 ก็คือเซลล์ D4
ขออภัยมองข้ามเงื่อนไขไปข้อหนึ่ง ปรับสูตรที่ D2 ใหม่เป็น =IF($A$1=A2,INDEX($A$2:$A$9,MATCH($A$1,$A$2:$A$9,0)),"")
Enter > Copy ลงล่าง
Ueng999
Member
Posts: 87 Joined: Thu Mar 14, 2013 1:36 pm
Excel Ver: Version 2301, 365
#6
Post
by Ueng999 » Sat May 18, 2013 3:18 pm
ยังไม่ได้ค่ะ จริงๆ แล้วต้องการทำเพื่อบันทึกการลงเวลาพนักงานค่ะ คิดว่าน่าจะต้องใช้ VBA ช่วยแต่ยังไปไม่เป็นเลยค่ะ ใครทราบช่วยบอกทีค่ะ
snasui
Site Admin
Posts: 31256 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Sat May 18, 2013 3:43 pm
ไม่ได้ก็ไม่แปลกครับ เนื่องจากการทำเช่นนั้นด้วย VBA ต้องศึกษาการ Loop ของ VBA ไม่สามารถใช้การบันทึก Macro เพื่อทำงานนี้ได้ VBA ไม่เหมือนสูตรใน Excel ที่พอจะเดาทางได้บ้าง จำเป็นที่จะต้องศึกษาพื้นฐานมาก่อนและปรับปรุงเองได้บ้าง ไม่เช่นนั้นไม่ควรใข้ VBA ถ้าจำเป็นต้องใช้ ให้ผู้ที่เขียนได้เขียนมาก่อน ติดตรงไหนค่อยถามกันครับ
สำหรับ Code ตัวอย่าง ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim r As Range
For Each r In Range("A2", Range("A" & Rows.Count) _
.End(xlUp))
If r = Range("A1") Then r.Offset(0, 3) = Now
Next r
MsgBox "บันทึกเวลาเข้างาน"
ThisWorkbook.Save
End Subb
Ueng999
Member
Posts: 87 Joined: Thu Mar 14, 2013 1:36 pm
Excel Ver: Version 2301, 365
#8
Post
by Ueng999 » Sun May 19, 2013 8:20 pm
ได้แล้วค่ะ ขอบคุณมาก มาก ค่ะ
Ueng999
Member
Posts: 87 Joined: Thu Mar 14, 2013 1:36 pm
Excel Ver: Version 2301, 365
#9
Post
by Ueng999 » Tue Jun 18, 2013 2:11 pm
จากการใช้งาน รบกวนอีกที่ค่ะ ถ้าต้องการให้เมื่อ คลิก CommandButton.2 ค้นหาวันที่จาก ช่วงเซลล์ A3:A8 ที่มีค่าเท่ากับเซลล์ B2 ให้วันที่และเวลาปัจจุบันปรากฏขึ้นที่เซลล์ E แถวที่ตรงกับเซลล์ A ที่ sheet 1,Sheet 2,Sheet 3 แต่ถ้าเชลล์ D ไม่มีข้อมูล(เวลาเข้างาน) เชลล์ E ก็ไม่ขึ้นข้อมูล(เวลาออกงาน)
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31256 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Tue Jun 18, 2013 2:25 pm
ได้ปรับ Code มาเองแล้วยัง ชื่อว่า Procedure อะไร ติดที่บรรทัดใดครับ