Giúp sửa code: hàm Month và nối chuỗi (2 người xem)

  • Thread starter Thread starter Hong.Van
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,330
Được thích
1,767
Em chào Thầy cô và anh chị!
Em có viết code hàm Month & nối chuỗi như sau:
Mã:
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 Sub
Code 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!
 

File đính kèm

Bạn sửa như thế này nhé
Mã:
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
 
Upvote 0
Em chào Thầy cô và anh chị!
Em có viết code hàm Month & nối chuỗi như sau:
Mã:
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 Sub
Code 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!
Nếu dữ liệu ít (1000 dòng trở lại) thì dùng cái này:
Mã:
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
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào Thầy cô và anh chị!
Em có viết code hàm Month & nối chuỗi như sau:
Mã:
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 Sub
Code 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!
Một cách để học hỏi thôi nhé:
PHP:
Sub Tthang_1()
    Dim i As Long, sArray(), dArr()
    sArray = Range("B9:B" & [B65536].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
    [C9].Resize(i - 1).Value = dArr
   End Sub

PHP:
Sub Tthang_1()
    Dim i As Long, sArray(), dArr()
    sArray = Range("B9:B" & [B65536].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
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom