Giúp sửa code: hàm Month và nối chuỗi
Em chào Thầy cô và anh chị!
Em có viết code hàm Month & nối chuỗi như sau:Sub Tthang_1() Dim i As Long, n1 As Range, T As String, sArray Dim Wf As WorksheetFunction Set Wf = WorksheetFunction With ActiveSheet Set n1 = .Range(.[B9], .[B65536].End(3)) sArray = n1.Resize(, 1).Value End With For i = 1 To UBound(sArray, 1) If IsDate(sArray(i, 1)) = True Then [COLOR=#ff0000]sArray(i, 2) = "T" & Wf.Month(sArray(i, 1))[/COLOR] Next i n1.Resize(, 1).Value = sArray End SubCode trên báo lỗi ở dòng chữ đỏ
1/ Yêu cầu dựa vào cột B, khi chạy code sẽ cho kết qủa như cột C
Ví dụ cell B9 là 02/01/12 khi chạy code thì sẽ cho kết qủa ở Cell C9 là T01 (nghĩa là lấy tháng ở cell B9 với 2 ký tự và nối với chữ T)
Xin lưu ý: nếu tháng 1 thì sẽ lấy hai ký tự là 01, tháng 12 sẽ là 12
Xin vui lòng xem File đính kèm, Em cảm ơn!Bạn sửa như thế này nhé
Sub Tthang_1() Dim i As Long, n1 As Range, T As String, sArray, Arr Dim Wf As WorksheetFunction Set Wf = WorksheetFunction With ActiveSheet Set n1 = .Range(.[B9], .[B65536].End(3)) sArray = n1.Resize(, 1).Value End With ReDim Arr(1 To UBound(sArray), 1 To 1) For i = 1 To UBound(sArray, 1) If IsDate(sArray(i, 1)) = True Then Arr(i, 1) = "T" & Format(sArray(i, 1), "mm") Next i n1.Offset(, 1).Value = Arr End Sub
Nếu dữ liệu ít (1000 dòng trở lại) thì dùng cái này:
Sub Tthang_1()
With Range([B9], [B65536].End(3)).Offset(, 1)
.Value = "=""T"" & TEXT(RC[-1],""mm"")"
.Value = .Value
End With
End Sub
——————–
Sao cứ With ActiveSheet hoài vậy trời? —> Vì dù không With thì cũng mặc định đang nói đến ActiveSheet rồi còn gì
Vậy nếu có With thì With 1 sheet nào đó (chỉ định chính xác)… còn nếu muốn code chạy trên ActiveSheet thì khỏi cần phải With gì ráo
www.giaiphapexcel.com/diendan/threads/gi%C3%BAp-s%E1%BB%ADa-code-h%C3%A0m-month-v%C3%A0-n%E1%BB%91i-chu%E1%BB%97i.75759/
Một cách để học hỏi thôi nhé:
Sub Tthang_1()
Dim i As Long, sArray(), dArr()
sArray = Range("B9:B" & .End(xlUp).Row).Value
ReDim dArr(1 To UBound(sArray, 1), 1 To 1)
For i = 1 To UBound(sArray)
If IsDate(sArray(i, 1)) Then dArr(i, 1) = "T" & Format(Month(sArray(i, 1)), "00")
Next i
.Resize(i – 1).Value = dArr
End SubSub Tthang_1()
Dim i As Long, sArray(), dArr()
sArray = Range("B9:B" & .End(xlUp).Row).Value
For i = 1 To UBound(sArray)
If IsDate(sArray(i, 1)) Then Range("C" & i + 8).Value = "T" & Format(Month(sArray(i, 1)), "00")
Next i
End Sub
Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...
Xem khóa học