Nhập liệu và Sửa đổi giá trị cell Excel

Liên hệ QC

tle2003

Thành viên hoạt động
Tham gia
22/1/07
Bài viết
145
Được thích
37
Chào các bạn
Tôi có 1 excel file , nhờ các bạn gíup ( file đính kèm)
Dữ liệu được nhập vào cột A, (A2:Ai). Làm ơn gíup VBA code cho yêu cầu dưới đây
1. Nếu ô A có hơn 22 ký tự, thì giữ lại
ví dụ : 500-0002_ABC123_00021964_20230408_23
2. Ngược lại nhỏ hơn 22 ký tự sẽ nhập liên tục 3 dòng trên cột A . Khi code chạy thì nối 3 ô lại theo quy luật vào ô thứ 1 của 3 ô
500-0002
005
12345678
==> 500-0002_Rev005_12345678
3. Xoá ô thứ 2, 3 và dời dữ liệu kế dưới lên cho dữ liệu liên tục
Cám ơn
 

File đính kèm

  • Vidu.xlsm
    20.4 KB · Đọc: 8
Dùng thử code này nhé,....

Mã:
Option Explicit
Sub donhang()
Dim lr&, i&, k&, rng, res(1 To 10000, 1 To 1), st As String
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("A1:A" & lr).Value
For i = 1 To UBound(rng)
    If Len(rng(i, 1)) > 22 Then
        st = "": k = k + 1: res(k, 1) = rng(i, 1)
    Else
        st = rng(i, 1)
        i = i + 1: st = st & "_Rev" & rng(i, 1)
        i = i + 1: st = st & "_" & rng(i, 1)
        k = k + 1: res(k, 1) = st
        Debug.Print st
    End If
Next
If k > 0 Then
    Range("A1:A10000").ClearContents
    Range("A1").Resize(k, 1).Value = res
End If
End Sub
 

File đính kèm

  • Vidu (1).xlsm
    32.1 KB · Đọc: 6
Không biết dữ liệu thực của bạn thế nào. Chứ trường hợp sau ô thứ 3 (12345678) vẫn là 1 ô <22 ký tự hoặc sau ô thứ 1 < 22 ký tự mà ô thứ 2 hay 3 >22 ký tự thì chưa thấy đề cập.
 
Dùng thử code này nhé,....

Mã:
Option Explicit
Sub donhang()
Dim lr&, i&, k&, rng, res(1 To 10000, 1 To 1), st As String
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("A1:A" & lr).Value
For i = 1 To UBound(rng)
    If Len(rng(i, 1)) > 22 Then
        st = "": k = k + 1: res(k, 1) = rng(i, 1)
    Else
        st = rng(i, 1)
        i = i + 1: st = st & "_Rev" & rng(i, 1)
        i = i + 1: st = st & "_" & rng(i, 1)
        k = k + 1: res(k, 1) = st
        Debug.Print st
    End If
Next
If k > 0 Then
    Range("A1:A10000").ClearContents
    Range("A1").Resize(k, 1).Value = res
End If
End Sub
Cám ơn bạn nhiều nhé
Bài đã được tự động gộp:

Không biết dữ liệu thực của bạn thế nào. Chứ trường hợp sau ô thứ 3 (12345678) vẫn là 1 ô <22 ký tự hoặc sau ô thứ 1 < 22 ký tự mà ô thứ 2 hay 3 >22 ký tự thì chưa thấy đề cập.
Do Dữ liệu tới là 1 QR code (chứa 3 thông tin cần thiết) , hay là 3 code128, cho nên nhân viên nhập liệu chỉ quét mã thôi. Mình đã nhờ anh em gíup để tiêu chuẩn lại dữ liệu trước khi chạy tiếp.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom