Xin hướng dẫn cách chèn ngày tháng (1 người xem)

Người dùng đang xem chủ đề này

vutruonghainam

Thành viên chính thức
Tham gia
31/10/09
Bài viết
78
Được thích
0
Tình hình em đang có cái bảng như thế này, anh chị có cách nào giúp em add tự động bằng code vb từ ngày đầu tháng đến ngày cuối tháng trong cột A1 được không ạ? Chứ cứ mỗi lần làm em phải đánh từng ngày tháng vào rất mất thời gian, mỗi ngày ở trong đó có số hàng không giống nhau, giúp e với nhé, em chân thành cảm ơn ạ! /-*+//-*+/
 

File đính kèm

Lần chỉnh sửa cuối:
Như vậy là ngày nào lẻ thì chèn 3 dòng; Ngày chẵn thì bao nhiêu dòng cũng được?
 
Không phải bác ạ, xin bác xem file của em để biết rõ nó như thế nào ạ
 
Mới chỉ đến ngày mùng 5 của tháng; Các ngày còn lại trong tháng thì bao nhiêu dòng?
 
Em ví dụ như vậy thôi bác, còn dài dài cho đến cuối tháng luôn ạ, mỗi tháng có số dòng khác nhau
 
Tình hình em đang có cái bảng như thế này, anh chị có cách nào giúp em add tự động bằng code vb từ ngày đầu tháng đến ngày cuối tháng trong cột A1 được không ạ? Chứ cứ mỗi lần làm em phải đánh từng ngày tháng vào rất mất thời gian, mỗi ngày ở trong đó có số hàng không giống nhau, giúp e với nhé, em chân thành cảm ơn ạ! /-*+//-*+/
Bạn dùng hàm thử xem
mình cũng dung như vậy cũng nhanh lắm, khi nào cần nhập ngày thì bạn nhập vào vậy là xong
tôi không hiểu ý của bạn nhưng bạn cứ xem file thử xem nha
 

File đính kèm

Em cảm ơn bác ạ, ý e là mình viết đoạn code chạy tự động từ A1 đến An thì cứ gặp ô nào có chữ "ngay" thì tự động cộng thêm 1 ngày ạ
Tại vì cứ đến tháng là số hàng giữa mỗi ngày nó lại khác nhau, không cố định cho nên không áp dụng cách trên được ạ
 
Bạn tham khảo & cho í kiến; Vì thực ra chưa hiểu mấy í của bạn là gì?
;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
 

File đính kèm

Em cảm ơn bác ạ, ý e là mình viết đoạn code chạy tự động từ A1 đến An thì cứ gặp ô nào có chữ "ngay" thì tự động cộng thêm 1 ngày ạ
Tại vì cứ đến tháng là số hàng giữa mỗi ngày nó lại khác nhau, không cố định cho nên không áp dụng cách trên được ạ
Của bác đấy. Mong là đúng ý.
p/s: mà bác này quen quen.
 

File đính kèm

Tại A2 bạn gõ ngày đầu tiên.
Tại A3:
Mã:
=IF(B3<>"","ngay",IF(B2<>"msnv",A2,MAX($A$2:A2)+1))
Copy xuống
 
Em chân thành cảm ơn các bác đã nhiệt tình giúp em, em thấy bác @bebo021999 là hiểu hiểu đúng ý em rồi ạ, ý em là làm sao nhập một ngày vào cột A1 rồi kéo xuống 1 phát, cứ gặp chữ "ngay" thì nó tự động cộng thêm 1 ngày, không liên quan gì đến msnv hay trừ lương,... chỉ liên quan đến chữ "ngay" thôi ạ, bởi vì mấy chữ khác mỗi tháng đều biến thiên khác nhau, chỉ có chữ "ngay" là không đổi thôi bác, nhưng có điều bác @bebo021999 làm thủ công, có cách nào chạy bằng vb luôn k ạ? --=0
 
Lần chỉnh sửa cuối:
em cũng thấy bác quen lắm ạ, hình như trước bác cũng giúp em 1 lần rồi --=0
 
Bạn hãy tự xem lại mình; một khi bạn nói cho 4 người, nhưng chỉ 1 người hiểu bạn là làm sao?

Hay là thế này đí:
Bạn lấy file mới với 2 trang tính; Một trang là dữ liệu ban đầu & trang còn lại là dữ liệu bạn mong muốn.
Chắc đây là lần gần cuối mình viết bài trong topic này, mong là vậy!
 
Tóm lại bảng sẽ trông như thế này ạ, mình nhập số ngày ở cột A2, sau đó kéo xuống hết cột A, cứ gặp chữ "ngay" thì nó sẽ cộng thêm 1 ngày so với ngày trước đó
 
File gốc đây bác ạ, có lẽ khả năng thuyết phục của em chưa cao --=0--=0--=0
 

File đính kèm

Bạn chọn tháng trên trang "L2" & nó chừa ngày CN ra luôn đó!
 

File đính kèm

Gửi bác. Cũng không biết đúng ý bác chưa.
p/s: Em nghĩ là bác nên gửi 2 bảng dữ liệu. Bảng 1 là dữ liệu ban đầu. Bảng 2 là dữ liệu kết quả mong muốn. Như vậy, mọi người sẽ dễ hiểu hơn.
 

File đính kèm

em cảm ơn 2 bác nhiều đã nhiệt tình giúp em nhé:
Bác @Hyen17 thì đúng ý em rồi ạ, có điều có thêm ngày CN nữa ạ, bác có thể hướng dẫn cho em làm như thế nào k? em cop đoạn mã vào cái file của em thì nó lại chạy không được ạ :(
Còn bác @befaint thì cũng đúng ý em, cách của bác làm rất nhanh, mà em nhập xong thì lần 2 k được nữa, bác có thể hướng dẫn em luôn đc k ạ @@
 
nhập xong thì lần 2 k được nữa, bác có thể hướng dẫn em luôn đc k ạ @@
Đoạn này không hiểu lắm.
Có phải bác nhập thử 1 ngày bất kỳ vào A2. sau đó, bác nhập lại ngày khác thì không được nữa??
Bác xem lại được không nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Tóm lại bảng sẽ trông như thế này ạ, mình nhập số ngày ở cột A2, sau đó kéo xuống hết cột A, cứ gặp chữ "ngay" thì nó sẽ cộng thêm 1 ngày so với ngày trước đó
- Bạn nhập ở ô A2 1/4/15
- Auto filter cột A, chọn blank
- Tại ô A3=IF(A2="ngay",A1+1,A2), kéo xuống
- Bỏ autofilter.
 
(2) Bác @Hyen17 thì đúng ý em rồi ạ, có điều có thêm ngày CN nữa ạ,
(1)bác có thể hướng dẫn cho em làm như thế nào k? em cop đoạn mã vào cái file của em thì nó lại chạy không được ạ :(

(1) Bạn lấy cái này, chép đè lên toàn bộ macro sự kiện trong trang tính 'L2' mà xài; Đảm bảo nhanh tấp lự!
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [b1]) Is Nothing Then
    Dim Arr()
    Dim Dat As Date, J As Long
 
    Dat = DateSerial([A1].Value, Target.Value, 0)
    Arr() = Range([A3], [A3].End(xlDown)).Value
    For J = 1 To UBound(Arr())
        If Arr(J, 1) = "Ngày" Then
            Dat = Dat + 1
        Else
            Arr(J, 1) = Dat
        End If
    Next J
    [A3].Resize([B3].CurrentRegion.Rows.Count).Value = Arr()
 End If
End Sub
(2) Trong file đính kèm là đi tìm chữ "Ngày" có dấu đủ dầy, có khi của bạn lại không có dấu tiếng Việt cũng nên.
 
Em cảm ơn mấy bác ạ, cho e xin thêm 1 cái nữa là, thêm cái auto cột "baixe" cũng y chang cột "ngay" nhưng k có cồn thêm 1 ngày, mà nhập chữ gì thì nó ra chạy luôn chữ đó luôn ạ, vd: nhập NT001 ở ô B2 thì nguyên cột B2 đều là NT001, trừ những hàng nào có chữ "baixe" thì giữ nguyên, gộp giùm e chung 1 macro nha, em cảm ơn ạ
 
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [b1]) Is Nothing Then
    Dim Arr(), BSX As String                            '*'
    Dim Dat As Date, J As Long
    
    BSX = InputBox("Nhap Chuoi Ban Càn: ", "GPE.COM", "NT001")  '<=|'
    Dat = DateSerial([A1].Value, Target.Value, 0)
    Arr() = Range([A3], [B3].End(xlDown)).Value         '*'
    For J = 1 To UBound(Arr())
        If Arr(J, 1) = "Ngày" Then
            Dat = Dat + 1
        Else
            Arr(J, 1) = Dat
        End If
        If Arr(J, 2) <> "baixe" Then Arr(J, 2) = BSX
    Next J
    [A3].Resize([B3].CurrentRegion.Rows.Count, 2).Value = Arr()
 End If
End Sub
-+*/ -+*/ -+*/
 
em thấy mã bác @befaint làm nhanh gọn ạ, mà thiếu một đoạn mã nhập vào ô B2 ra để ra "baixe", bác @HYen17 hay bác @befaint giúp em thêm 1 lần này nữa đc k ạ?

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False


If Target.Address = "$A$2" Then
Dim i&, n&
n = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
For i = 3 To n
    If ActiveSheet.Range("A" & i).Value <> "" And _
    ActiveSheet.Range("A" & i).Value <> "ngay" Then
    ActiveSheet.Range("A" & i) = ""
    End If
    
    If ActiveSheet.Range("A" & i).Value = "ngay" Then
    ActiveSheet.Range("A" & i) = "ngay"
    End If
    
    If ActiveSheet.Range("A" & i).Value = "" And _
    IsDate(ActiveSheet.Range("A" & i - 1).Value) = True Then
    ActiveSheet.Range("A" & i) = ActiveSheet.Range("A" & i - 1)
    End If
 
Lần chỉnh sửa cuối:
Bác ơi, tình hình sau khi cop xong nó báo lỗi bác à, còn em làm khoảng 11 ngày thì nó chạy đc, 30 ngày thì k chạy được, file gốc của em đây ạ
 

File đính kèm

Bác ơi, tình hình sau khi cop xong nó báo lỗi bác à, còn em làm khoảng 11 ngày thì nó chạy đc, 30 ngày thì k chạy được, file gốc của em đây ạ
Bác chỉ cần định dạng cột A là kiểu "Date" sẽ chạy ầm ầm.
Hoặc sửa lại đoạn:
PHP:
If Target.Address = "$A$2" Then
ActiveSheet.Range("A1", "A" & n).NumberFormat = "dd/mm/yyyy"  'Them dong nay
For i = 3 To n
 
Lần chỉnh sửa cuối:
á, được rồi, cảm ơn bác nhiều nhé ^^
 

Bài viết mới nhất

Back
Top Bottom