LamNA
Thành viên tích cực


- Tham gia
- 3/6/14
- Bài viết
- 897
- Được thích
- 725
- Giới tính
- Nam
- Nghề nghiệp
- Quản Lý Cửa Hàng
Cái này bạn dùng hàm được mà. Bạn muốn dùng code vba để làm gì?
Phần thu Macro xong tạo nút bấm em xử lý được ý em muốn nó hoàn toàn tự động cho file. HihiBạn thao tác lọc nhờ AdvancedFilter cho thật nhuyễn;
Sau đó mở bộ thu macro lên & thu các thao tác lọc nêu trên là được 90% công việc theo iêu cầu của bạn rồi.
10% còn lại nhờ Cộng đồng sẽ trao chuốt cho bạn.
File ví dụ cũng 1 phần rõ ràng rồi đó anh,Hời hợt quá! Lọc cái gì, lọc theo tiêu chí nào, kết quả lọc vứt vào đâu, và đây là file dữ liệu ảo, file thật đâu, viết code trên file ảo, rồi lại sửa tùm lum à.
Dạ đúng ý của em nếu em muốn chạy hết cột B:B , C:C: , DBạn gõ ngày vào cột A rồi enter , từ dòng 2 xuống, thì tự động cho kết quả.
Bạn xem có đúng ý không
Em nhập ngày tháng từng ô thì chạy code nhưng khi copy hay kéo xuống thì nó lại báo lỗi, nhờ anh hỗ trợ giúp em nhe
Em cám ơn
View attachment 194687
Lọc đâu mà lọc???? Rõ là đổi ngày (dd/mm/yyyy) thành ngày - tháng - năm - tuần - thứ!!!!!!!!!!!!!Rất mong anh chị hỗ trợ trường hợp này giúp em ạ
Em nhập ngày tháng từng ô thì chạy code nhưng khi copy hay kéo xuống thì nó lại báo lỗi, nhờ anh hỗ trợ giúp em nhe
Em cám ơn
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, change As Range
Set change = Intersect(Target, Range("A2:A500000"))
If Not change Is Nothing Then
Application.EnableEvents = False
Application.ScreenUpdating = False
For Each rng In change
With rng
.Offset(0, 1).Value = Format(rng, "d")
.Offset(0, 2).Value = Format(rng, "m")
.Offset(0, 3).Value = Format(rng, "yyyy")
.Offset(0, 4).Value = Format(rng, "ww")
End With
Next rng
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub
Function ConvertDate2ABC(ByVal dDate As Long)
Dim a(1 To 5)
a(1) = Day(dDate)
a(2) = Month(dDate)
a(3) = Year(dDate)
' a(4) = Weekday(dDate)
a(4) = WorksheetFunction.WeekNum(dDate) 'Sửa dòng này'
a(5) = WorksheetFunction.Text(dDate, "[$-42A]dddd") 'Tiêng Viêt'
'a(5) = WorksheetFunction.Text(dDate, "dddd") 'Tiêng Anh'
ConvertDate2ABC = a
End Function
Target.Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2)))
'Hoặc theo bài trên:'
[code]
With rng
.Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2)))
End With
Rảnh nghịch tẹo...
Ở module
Ở worksheetPHP:Function ConvertDate2ABC(ByVal dDate As Long) Dim a(1 To 5) a(1) = Day(dDate) a(2) = Month(dDate) a(3) = Year(dDate) ' a(4) = Weekday(dDate) a(4) = WorksheetFunction.WeekNum(dDate) 'Sửa dòng này' a(5) = WorksheetFunction.Text(dDate, "[$-42A]dddd") 'Tiêng Viêt' 'a(5) = WorksheetFunction.Text(dDate, "dddd") 'Tiêng Anh' ConvertDate2ABC = a End Function
Mã:Target.Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2))) 'Hoặc theo bài trên:' [code] With rng .Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2))) End With
Thay bằng code mới
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, change As Range Set change = Intersect(Target, Range("A2:A500000")) If Not change Is Nothing Then Application.EnableEvents = False Application.ScreenUpdating = False For Each rng In change With rng .Offset(0, 1).Value = Format(rng, "d") .Offset(0, 2).Value = Format(rng, "m") .Offset(0, 3).Value = Format(rng, "yyyy") .Offset(0, 4).Value = Format(rng, "ww") End With Next rng Application.ScreenUpdating = True Application.EnableEvents = True End If End Sub
Rảnh nghịch tẹo...
Ở module
Ở worksheetPHP:Function ConvertDate2ABC(ByVal dDate As Long) ... ConvertDate2ABC = a End Function
'Hoặc theo bài trên:'
With rng
.Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2)))
End With
Người ta không nói kéo xuống bao nhiêu nên để đề phòng kéo hàng ngàn dòng thì tôi có vd. Application.ScreenUpdating = False / True.nhưng khi copy hay kéo xuống
.Offset(0, 1).Resize(1, 5) = ConvertDate2ABC(CLng(Val(Target.Value2)))
Thêm phần Thứ vào code của batman1 , chắc lần này được rồi nghe.