Code lấy 4 ký tự cuối cùng của chuỗi

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Em có File kèm theo. Từ các ký tự tại dãy A, có code gì để lấy được 4 ký tự cuối cùng của từng Item tại dãy A sang cột C ạ (Chỉ làm việc khi giá trị cột A khác rỗng ạ, tức tìm từ dưới lên tại cột A mà giá trị khác rỗng mới thực hiện tính sang côt C ạ. Em cảm ơn anh chị ạ.
 

File đính kèm

Em có File kèm theo. Từ các ký tự tại dãy A, có code gì để lấy được 4 ký tự cuối cùng của từng Item tại dãy A sang cột C ạ (Chỉ làm việc khi giá trị cột A khác rỗng ạ, tức tìm từ dưới lên tại cột A mà giá trị khác rỗng mới thực hiện tính sang côt C ạ. Em cảm ơn anh chị ạ.
Dùng hàm như vậy là được rồi sao phải dùng VBA vậy bạn?
 
Upvote 0
Em có File kèm theo. Từ các ký tự tại dãy A, có code gì để lấy được 4 ký tự cuối cùng của từng Item tại dãy A sang cột C ạ (Chỉ làm việc khi giá trị cột A khác rỗng ạ, tức tìm từ dưới lên tại cột A mà giá trị khác rỗng mới thực hiện tính sang côt C ạ. Em cảm ơn anh chị ạ.
Trong code cũng tương tự như viết hàm vậy thôi vẫn dùng hàm right.
 
Upvote 0
Em có File kèm theo. Từ các ký tự tại dãy A, có code gì để lấy được 4 ký tự cuối cùng của từng Item tại dãy A sang cột C ạ (Chỉ làm việc khi giá trị cột A khác rỗng ạ, tức tìm từ dưới lên tại cột A mà giá trị khác rỗng mới thực hiện tính sang côt C ạ. Em cảm ơn anh chị ạ.
Bạn thử:
PHP:
Sub Test()
    Dim Cll As Range
    Application.ScreenUpdating = False
    For Each Cll In Selection
        Cll.Offset(, 3).Value = Right(Cll.Value, 4)
    Next
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
sợ nếu dữ liệu lớn vẫn bị nặng file
Vừa mới kêu muốn học mà đã kêu sợ lắm thứ thế. Gớm mật..

PHP:
Option Explicit
'***'
Sub vidu_Range()
    Dim ma_don_vi As String, loai_hinh As String, i As Long '// khai bao cac bien'
    With Sheet1
        For i = 2 To 40 '// vong lap chay tu dong 2 toi dong 40'
            ma_don_vi = .Range("A" & i).Value '// lay gia tri cua cell gan vao bien'
            If Len(ma_don_vi) > 0 Then '// xet chuoi, neu len()>0 thi moi lay 4 ky tu ben phai'
                loai_hinh = Right(ma_don_vi, 4) '// lay 4 ky tu ben phai'
                .Range("C" & i).Value = loai_hinh '// gan ket qua vao cell tuong ung cua cot [C]'
            End If
        Next i
    End With
End Sub
'****'
Sub vidu_Array()
    Dim mang_du_lieu(), ket_qua()  '// tao 2 mang cho de hinh dung'
    Dim ma_don_vi As String, loai_hinh As String, i As Long, maxR As Long
    With Sheet1
        mang_du_lieu = .Range("A2:A40").Value '// gan mang du lieu vao mot bien mang'
        maxR = UBound(mang_du_lieu, 1) '// lay chi so can trên chiêu thu nhât cua mang (= kich thuoc chiêu thu nhât cua mang)'
        ReDim ket_qua(1 To maxR, 1 To 1) '// khai bao lai kich thuoc cua mang ket qua (= kich thuoc mang du lieu can xu ly)'
        For i = 1 To maxR                  '// vong lap xet cac phan tu cua mang du lieu'
            ma_don_vi = mang_du_lieu(i, 1)  '// gan phan tu can xet cua mang du lieu vao môt biên trung gian'
            If Len(ma_don_vi) > 0 Then
                loai_hinh = Right(ma_don_vi, 4) '// lay 4 ky tu ben phai'
                ket_qua(i, 1) = loai_hinh       '// gan ket qua tach duoc vao mang ket qua'
            End If
        Next i
        .Range("C2").Resize(maxR, 1).Value = ket_qua '// chep mang ket_qua xuong bang tinh, tu cell [C2]'
    End With
End Sub
 
Upvote 0
Thỉnh thoảng lại có 1 vài bạn lên diễn đàn đặt mấy câu hỏi kiểu: Mong mọi người giúp đỡ em muốn/ em mới tìm hiểu VBA, tự học thì phải làm thế nào/ làm sao hoặc cho xin tài liệu này kia. bla bla... v...v
Đa số là nhận kết thảm
Thực ra cứ như bạn khanhly94 ;thì sẽ những bạn có nhu cầu tự học sẽ học được nhiều về VBA
 
Upvote 0
Thỉnh thoảng lại có 1 vài bạn lên diễn đàn đặt mấy câu hỏi kiểu: Mong mọi người giúp đỡ em muốn/ em mới tìm hiểu VBA, tự học thì phải làm thế nào/ làm sao hoặc cho xin tài liệu này kia. bla bla... v...v
Đa số là nhận kết thảm
Thực ra cứ như bạn khanhly94 ;thì sẽ những bạn có nhu cầu tự học sẽ học được nhiều về VBA
Tưởng tượng.
Thống kê cho tôi biết là cứ những người mở miệng ra có câu "dữ liệu lớn..." là những người không đủ kiên nhẫn. Mà khong đủ kiên nhẫn thì học mánh khoé gì không biết chứ học lập trình sẽ thất bại.
 
Upvote 0
Vừa mới kêu muốn học mà đã kêu sợ lắm thứ thế. Gớm mật..

PHP:
Option Explicit
'***'
Sub vidu_Range()
    Dim ma_don_vi As String, loai_hinh As String, i As Long '// khai bao cac bien'
    With Sheet1
        For i = 2 To 40 '// vong lap chay tu dong 2 toi dong 40'
            ma_don_vi = .Range("A" & i).Value '// lay gia tri cua cell gan vao bien'
            If Len(ma_don_vi) > 0 Then '// xet chuoi, neu len()>0 thi moi lay 4 ky tu ben phai'
                loai_hinh = Right(ma_don_vi, 4) '// lay 4 ky tu ben phai'
                .Range("C" & i).Value = loai_hinh '// gan ket qua vao cell tuong ung cua cot [C]'
            End If
        Next i
    End With
End Sub
'****'
Sub vidu_Array()
    Dim mang_du_lieu(), ket_qua()  '// tao 2 mang cho de hinh dung'
    Dim ma_don_vi As String, loai_hinh As String, i As Long, maxR As Long
    With Sheet1
        mang_du_lieu = .Range("A2:A40").Value '// gan mang du lieu vao mot bien mang'
        maxR = UBound(mang_du_lieu, 1) '// lay chi so can trên chiêu thu nhât cua mang (= kich thuoc chiêu thu nhât cua mang)'
        ReDim ket_qua(1 To maxR, 1 To 1) '// khai bao lai kich thuoc cua mang ket qua (= kich thuoc mang du lieu can xu ly)'
        For i = 1 To maxR                  '// vong lap xet cac phan tu cua mang du lieu'
            ma_don_vi = mang_du_lieu(i, 1)  '// gan phan tu can xet cua mang du lieu vao môt biên trung gian'
            If Len(ma_don_vi) > 0 Then
                loai_hinh = Right(ma_don_vi, 4) '// lay 4 ky tu ben phai'
                ket_qua(i, 1) = loai_hinh       '// gan ket qua tach duoc vao mang ket qua'
            End If
        Next i
        .Range("C2").Resize(maxR, 1).Value = ket_qua '// chep mang ket_qua xuong bang tinh, tu cell [C2]'
    End With
End Sub
Sách và code trên mạng thì không có hướng dẫn cụ thể như vậy, nên đọc sách và xem code trên mạng cũng không hiểu được.
 
Upvote 0
Sách và code trên mạng thì không có hướng dẫn cụ thể như vậy, nên đọc sách và xem code trên mạng cũng không hiểu được.
Theo mình thì không gì là không thể; mà chỉ là chưa thể mà thôi!
Nếu muốn (hiểu) ta cũng cần có trợ gíup, như file (hiển nhiên rồi), câu lệnh MsgBox() thêm vô trước hay sau câu lệnh chưa hiểu
& vài phương tiện khác trong VBE cung cấp sẵn
& nếu cụ thể là VBA thì trước đó luôn diễn dịch các câu lệnh sang tiếng Việt, từ dễ đến khó.
 
Upvote 0
Theo mình thì không gì là không thể; mà chỉ là chưa thể mà thôi!
Nếu muốn (hiểu) ta cũng cần có trợ gíup, như file (hiển nhiên rồi), câu lệnh MsgBox() thêm vô trước hay sau câu lệnh chưa hiểu
& vài phương tiện khác trong VBE cung cấp sẵn
& nếu cụ thể là VBA thì trước đó luôn diễn dịch các câu lệnh sang tiếng Việt, từ dễ đến khó.
Mình chưa được học ở trường hay trung tâm dạy về VBA nên không biết dùng câu lệnh như thế nào, còn sưu tầm tài liệu thì người ta viết sẳn code.
 
Upvote 0
Hiểu code là một chuyện. Hiểu tại sao người viết code lại viết như thế là một chuyện khác.

VBA là ngôn ngữ ứng dụng từ đâu thập niên 1990's. Cứ mỗi tiến hoá, nó lại bị bắt buộc phải "thích ứng với các phiên bản trước (backward compatible)" cho nên càng ngày càng trĩu nặng hết lệnh này đến lệnh khác.

Chỉ cần lục lại code 7-8 năm trước đây sẽ thấy cách viết code khác.
Điển hình nhất là hồi xưa kỹ thuật cóp dữ liệu vào mảng để xử lý nhanh hơn chưa được phổ biến như bây giờ. Giản dị là hồi đó bà con chưa tin tưởng vào nó.
(Hiện nay thì hầu như 10 code có đến 8-9 dùng kỹ thuật này)
Điển hình thứ hai Mấy năm gần đây thì bà con lại thêm kiến thức về API và cách kết nói trễ. Trước đó bà con dùng library reference để kết nối sớm.
Điển hình thứ ba là lợi dụng khả năng sắp xếp và lọc dữ liệu của ADODB để đọc bảng. Càng về sau này, các câu lệnh SQL càng phức tạp.
 
Upvote 0
Web KT

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

Back
Top Bottom