Lấy dữ liệu vùng chọn trong excel (1 người xem)

Liên hệ QC

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

nhatlinh0207

Thành viên mới
Tham gia
25/12/13
Bài viết
5
Được thích
1
Mình sử dụng code sau để lấy dữ liệu nhưng mà cảm thấy code này chạy rất chậm nếu dùng bảng lớn.
Mã:
Dim cl As Range        Dim Chon As Range
        Set Chon = ActiveSheet.Range(Selection.Address)
        For Each cl In Chon
            cl.Value = cl.value +1

        Next cl
Xin cảm ơn
 
Mình sử dụng code sau để lấy dữ liệu nhưng mà cảm thấy code này chạy rất chậm nếu dùng bảng lớn.
Mã:
Dim cl As Range        Dim Chon As Range
        Set Chon = ActiveSheet.Range(Selection.Address)
        For Each cl In Chon
            cl.Value = cl.value +1

        Next cl
Xin cảm ơn
Code trên chậm là bình thường mà. Bạn đính kèm file, nêu chi tiết mọi người sẽ tối ưu code cho bạn.
 
Upvote 0
Mình làm cái chuyển font chữ ý mà.
Funtction:
Mã:
Private Function ConvertStr(Txt As String, Optional isReversed As Boolean = False) As String ' true la TCVN sang UNICODE    Dim IStr$, i%, UN, VN
    IStr = Txt


    UN = Array(225, 224, 7843, 227, 7841, 259, 7855, 7857, 7859, 7861, 7863, 226, _
    7845, 7847, 7849, 7851, 7853, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, _
    7877, 7879, 237, 236, 7881, 297, 7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, _
    7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, 250, 249, 7911, 361, 7909, _
    432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 273, 193, 192, 195, _
    258, 194, 212, 416, 431, 272)


    VN = Array(184, 181, 182, 183, 185, 168, 190, 187, 188, 189, 198, 169, 202, 199, 200, _
    201, 203, 208, 204, 206, 207, 209, 170, 213, 210, 211, 212, 214, 221, 215, 216, 220, _
    222, 227, 223, 225, 226, 228, 171, 232, 229, 230, 231, 233, 172, 237, 234, 235, 236, _
    238, 243, 239, 241, 242, 244, 173, 248, 245, 246, 247, 249, 253, 250, 251, 252, 254, _
    174, 193, 192, 195, 161, 162, 164, 165, 166, 167)


    For i = 0 To 75
        If isReversed And InStr(Txt, ChrW(UN(i))) <> 0 Then
            IStr = Replace(IStr, ChrW(UN(i)), "[" & VN(i) & "]")
        ElseIf InStr(IStr, ChrW(VN(i))) <> 0 Then
            IStr = Replace(IStr, ChrW(VN(i)), "[" & UN(i) & "]")
        End If
    Next
    If Len(IStr) <> Len(Txt) Then
        For i = 0 To 75
            If isReversed Then
                IStr = Replace(IStr, "[" & VN(i) & "]", ChrW(VN(i)))
            Else
                IStr = Replace(IStr, "[" & UN(i) & "]", ChrW(UN(i)))
            End If
        Next
    End If
    ConvertStr = IStr
End Function

sử dụng: nhưng thấy chạy chậm hơn so với mọi người nên hỏi :D
Mã:
Dim cl As Range        Dim Chon As Range
        Set Chon = ActiveSheet.Range(Selection.Address)
        For Each cl In Chon
                cl.Value = ConvertStr(cl.Value, False)
        Next cl
        Chon.Font.Name = "Times New Roman"
 
Upvote 0
Web KT

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

Back
Top Bottom