VBA วิธีเอาตัวแปรวันที่ไปคำนวณใน Application.Sumifs ครับ
Posted: Sat Jan 23, 2016 8:15 pm
สวัสดีอาจารย์และเพื่อนๆ ครับ
ผมเจอปัญหาว่า เมื่อเอาวันที่เป็นเกณฑ์หนึ่งในสูตร Sumifs ที่เขียนด้วย VBA ผลลัพธ์จะหาไม่ได้ทุกครั้งไป ผมต้องกำหนดอะไรผิดแน่ๆ (เมื่อเอาตัวแปรวันที่ไปใช้ใน AdvancedFilter ก็เจอลักษณะเดียวกัน)
จากไฟล์แนบ ผมมีตารางข้อมูลในเซลล์ A1:D14 แสดงคะแนนของแต่ละคนในวันเวลาต่างๆ คือ
คอลัมน์ A --> วัน เวลา
คอลัมน์ B --> ชื่อ
คอลัมน์ C --> สถานะเอกสาร (0 คือยกเลิกครับ จะเอามารวมเฉพาะรายการที่มากกว่า 0)
คอลัมน์ D--> คะแนน
ที่เซลล์ G4 เขียนสูตร Sumifs และได้ผลรวมตามปกติ แต่เมื่อเอามาเขียน VBA โดยต้องใส่วันที่ในเซลล์ G3 โค้ดจึงจะทำงาน ปรากฏว่าไม่ได้ผลลัพธ์ตามต้องการครับ ผมต้องปรับโค้ดอย่างไรดี
โค้ดอยู่ใน Sheet1 ครับ
ผมลองเอา
ผมเจอปัญหาว่า เมื่อเอาวันที่เป็นเกณฑ์หนึ่งในสูตร Sumifs ที่เขียนด้วย VBA ผลลัพธ์จะหาไม่ได้ทุกครั้งไป ผมต้องกำหนดอะไรผิดแน่ๆ (เมื่อเอาตัวแปรวันที่ไปใช้ใน AdvancedFilter ก็เจอลักษณะเดียวกัน)
จากไฟล์แนบ ผมมีตารางข้อมูลในเซลล์ A1:D14 แสดงคะแนนของแต่ละคนในวันเวลาต่างๆ คือ
คอลัมน์ A --> วัน เวลา
คอลัมน์ B --> ชื่อ
คอลัมน์ C --> สถานะเอกสาร (0 คือยกเลิกครับ จะเอามารวมเฉพาะรายการที่มากกว่า 0)
คอลัมน์ D--> คะแนน
ที่เซลล์ G4 เขียนสูตร Sumifs และได้ผลรวมตามปกติ แต่เมื่อเอามาเขียน VBA โดยต้องใส่วันที่ในเซลล์ G3 โค้ดจึงจะทำงาน ปรากฏว่าไม่ได้ผลลัพธ์ตามต้องการครับ ผมต้องปรับโค้ดอย่างไรดี
โค้ดอยู่ใน Sheet1 ครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, dDate As Date
If Target.Address = "$G$3" Then
With Me
Set r = .Range("a2:a" & .Range("a" & .Rows.Count).End(xlUp).Row)
dDate = Target.Value
.Range("h4") = Application.SumIfs(r.Offset(0, 3), _
r.Offset(0, 1), .Range("g2"), _
r.Offset(0, 2), ">0", _
r, "<=" & dDate)
End With
End If
End Subr, "<=" & dDate ออก ปรากฎว่าคำนวณได้ (แต่ก็ไม่ถูก เพราะมันต้องดูวันที่ด้วย) แต่พอเอาวันที่มาเป็นเกณฑ์ด้วย ได้คำตอบเป็น 0 ทันที งงจริงๆ ครับ