Tạo ngày "từ ngày đến ngày" (6 người xem)

Liên hệ QC

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

Giahao2006

Thành viên mới
Tham gia
31/7/20
Bài viết
32
Được thích
14
Giới tính
Nam
Chào Anh/Chị ạ, mình có 1 ngày bắt đầu và ngày kết thúc bất kỳ, kính nhờ Anh/Chị viết giúp ra kết quả giống ví dụ như hình dưới với ạ, cảm ơn Anh/Chị nhiều ạ

1663328895095.png
 
Upvote 0
Chào Anh/Chị ạ, mình có 1 ngày bắt đầu và ngày kết thúc bất kỳ, kính nhờ Anh/Chị viết giúp ra kết quả giống ví dụ như hình dưới với ạ, cảm ơn Anh/Chị nhiều ạ

View attachment 281059
Bạn thử xem
PHP:
Sub Create_Date()
    Dim Ngaybatdau, Ngayketthuc
    Dim dArr()
    Dim i As Integer, songay As Integer
    
    With Sheets("Sheet1")
        Ngaybatdau = .Range("A2").Value
        Ngayketthuc = .Range("B2").Value
        songay = Int(Ngayketthuc - Ngaybatdau)
        ReDim dArr(0 To songay, 1 To 1)
        
        For i = 0 To songay
            dArr(i, 1) = Ngaybatdau + i
        Next i
        
        .Range("F2:F100000").ClearContents
        .Range("F2").Resize(songay + 1, 1).Value = dArr
    End With
End Sub
 
Upvote 0
Mình viết thêm đoạn code dùng Fill theo hướng dẫn của anh @VetMini , bạn có thể tham khảo nhé.
PHP:
Sub Create_Date()
    Dim Ngaybatdau, Ngayketthuc
    Dim songay As Integer
   
    With Sheets("Sheet1")
        Ngaybatdau = .Range("A2").Value
        Ngayketthuc = .Range("B2").Value
        songay = Int(Ngayketthuc - Ngaybatdau)
       
        .Range("F2:F100000").ClearContents
        .Range("F2") = Ngaybatdau
        .Range("F2").AutoFill Destination:=Range("F2:F" & songay + 2)
    End With
End Sub
 
Upvote 0
Mình viết thêm đoạn code dùng Fill theo hướng dẫn của anh @VetMini , bạn có thể tham khảo nhé.
PHP:
Sub Create_Date()
    Dim Ngaybatdau, Ngayketthuc
    Dim songay As Integer
  
    With Sheets("Sheet1")
        Ngaybatdau = .Range("A2").Value
        Ngayketthuc = .Range("B2").Value
        songay = Int(Ngayketthuc - Ngaybatdau)
      
        .Range("F2:F100000").ClearContents
        .Range("F2") = Ngaybatdau
        .Range("F2").AutoFill Destination:=Range("F2:F" & songay + 2)
    End With
End Sub
Bạn thử sang sheet khác rồi chạy code thử nhé.
Chỉnh lại code bạn như sau:

Mã:
Sub Create_Date()
    With Sheets("Sheet1")
        .Range("F2:F100000").ClearContents
        .Range("F2") = .Range("A2").Value
        .Range("F2").AutoFill .Range("F2:F" & .Range("B2") - .Range("A2") + 2)
    End With
End Sub
 
Upvote 0
Thường thường thì nếu chỉ fill một cột, và nếu cách tính toán giản dị thì dùng hàm Evaluate cũng khá hiệu quả:

Sub t()
Set rg = Range("$D$2").Resize(Range("B2").Value - Range("A2").Value + 1)
rg.Value = Evaluate("=$A$2+row(" & rg.Address & ") - row($D$2)")
End Sub
 
Upvote 0
Excel 365
=SEQUENCE(A2-A1+1, 1, A1)

1663490386331.png
 
Upvote 0
Thiếu có 1 dấu chấm thôi mà!
Đó là một trong những điều nguy hiểm của sử dụng khối With cho sheet. Sơ sểnh dấu chấm là có chết.
Thường thì lúc code, tôi đặt quách một cái biến cho sheet.

With thì tôi dùng cho các objects khác. Lỡ gọi hàm hay thuộc tính thiếu dấu chấm thì 95% trường hợp VBA đã dãy nãy lên, mình nhận ra ngay.
 
Upvote 0
Web KT

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

Back
Top Bottom