EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ต้องพิจารณาเรื่องความสะดวกของการนำไปใช้ครับ ถ้าหากว่าใส่เงื่อนไขต่าง ๆ ไว้ครบ ตอนนำไปใช้ก็จะง่ายลงครับjoo wrote:แต่ละรหัสบุคคลจะมีสิทธิสะสมวันลาไม่เหมือนกัน เช่น
รหัส 10101 มีสิทธิสะสมได้แต่ไม่เกิน 30
รหัส 20101 สะสมไม่ได้
หรือว่าในตาราง StockDay ยังไม่ต้องสนใจเงื่อนไขนี้เก็บข้อมูลวันลาสะสมไปเรื่อยๆ เวลาเอาไปใช้จึงค่อยใส่เงื่อนไขเข้าไปน่าจะดี
สำหรับไฟล์นี้ผม Copy เป็น Value มาให้ครับsnasui wrote:
คำถามที่อาจจะมีได้คือแล้วข้อมูลในชีท StockDay มาได้อย่างไร คำตอบคือ Copy มาวางเฉพาะ Values หรือหากไม่อยาก Copy ด้วย Manual ก็สามารถเขียน VBA ให้นำมาวางก็ย่อมได้ครับ
ปัญหาคือ การเตรียมข้อมูลในซีท StockDay ครับ ที่ซีท StockDay ถ้าตอนแรกคีย์ข้อมูลที่ยกยอดมาจากปีงบประมาณ 2552 ใส่ให้ครบทุกรหัสบุคคลไว้ก่อน เมื่อเราทำการคีย์ข้อมูลที่ซีท Main แล้วมีการบันทึกข้อมูลไปเก็บไว้ที่ซีท RecordData ก็ให้ข้อมูลในซีท StockDay อัพเดทตามทุกครั้งครับ พอมีแนวทางเป็นไปได้ไหมครับผมอ่านแล้วไม่เข้าใจนะครับ ไม่ทราบว่าปัญหาคืออะไรครับ
ก็ต้องดูเรื่องงวดการบันทึกข้อมูลว่าเป็นงวดเดียวกันหรือไม่ครับjoo wrote: เมื่อเราทำการคีย์ข้อมูลที่ซีท Main แล้วมีการบันทึกข้อมูลไปเก็บไว้ที่ซีท RecordData ก็ให้ข้อมูลในซีท StockDay อัพเดทตามทุกครั้งครับ พอมีแนวทางเป็นไปได้ไหมครับ
Code: Select all
Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
Dim Lc As Integer, Ac As Integer, Af As Integer
Lc = Sheets("StockDay").Range("A65536").End(xlUp).Value + 1
With Worksheets("Report1")
Ac = Application.CountIf(.Range("B:B"), Lc)
Af = Application.Match(Lc, .Range("B:B"), 0)
End With
Application.ScreenUpdating = False
Set rSource = Sheets("Report1").Range( _
"B" & Af & ":C" & Ac + Af - 1 & ",G" & Af & ":G" & Ac + Af - 1)
Set rTarget = Sheets("StockDay").Range("A65536").End(xlUp).Offset(1, 0)
rSource.Copy
rTarget.PasteSpecial xlPasteValues
Application.ScreenUpdating = True
Application.CutCopyMode = False
MsgBox "Record Complete"
End Sub
Code: Select all
Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
Dim Lc As Integer, Ac As Integer, Af As Integer
On Error Resume Next
Lc = Sheets("StockDay").Range("A65536").End(xlUp).Value + 1
With Worksheets("Report1")
Ac = Application.CountIf(.Range("B:B"), Lc)
Af = Application.Match(Lc, .Range("B:B"), 0)
End With
Application.ScreenUpdating = False
Set rSource = Sheets("Report1").Range( _
"B" & Af & ":C" & Ac + Af - 1 & ",G" & Af & ":G" & Ac + Af - 1)
Set rTarget = Sheets("StockDay").Range("A65536").End(xlUp).Offset(1, 0)
rSource.Copy
rTarget.PasteSpecial xlPasteValues
Application.ScreenUpdating = True
Application.CutCopyMode = False
MsgBox "Record Complete"
If rSource.Copy = False Then
MsgBox "No Data Record "
End If
End Sub
Code: Select all
Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
Dim Lc As Integer, Ac As Integer
Application.ScreenUpdating = False
Lc = Sheets("StockDay").Range("A65536").End(xlUp).Value + 1
With Worksheets("Report1")
Ac = Application.CountIf(.Range("B:B"), Lc)
Af = Application.Match(Lc, .Range("B:B"), 0)
End With
If Ac = 0 Then
MsgBox "No data for paste."
Exit Sub
End If
Set rSource = Sheets("Report1").Range( _
"B" & Af & ":C" & Ac + Af - 1 & ",G" & Af & ":G" & Ac + Af - 1)
Set rTarget = Sheets("StockDay").Range("A65536").End(xlUp).Offset(1, 0)
rSource.Copy
rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Record Complete"
End Sub
และที่ซีท StockDay เราสามารถอ้างอิงที่คอลัมภ์ A ได้ไหมครับ ทำไมต้องอ้างอิงที่คอลัมภ์ E ผมลองให้อ้างอิงที่คอลัมภ์ A โดยใส่ข้อมูลตั้งแต่ A2:A10 เป็น 2553 ทำการ UpdateStockDay ปรากฎว่าค่าที่ได้ในซีท StockDay จะออกมาไม่ตรงกับข้อมูลในซีท Report1 ของคอลัมภ์ G ครับ
คุณ Joo ดูตรงไหนครับถึงพบว่าอ้างคอลัมน์ E