Hong.Van
Busy
- Tham gia
- 7/5/12
- Bài viết
- 2,328
- Được thích
- 1,765
Em chào Thầy cô & anh chị!
Em viết code như sau:
Tại Sheet TH, lấy tên khách hàng ở cột G, Tìm tại Cột BE của Sheet MA, nếu tìm được thì lấy qua một cột (Cột BF) và gán nó vào Cột AG của Sheet TH tại dòng tương ứng.
Ví dụ: Tại dòng thứ 9 của Sheet TH, Cell G9 không có Tên khách hàng, Cell AG9 đã có sẵn Mã KH, khi chạy code nó làm mất Mã KH tại cell AG9!!!. Em muốn sửa code, nếu KHÔNG CÓ TÊN KHÁCH HÀNG TẠI CỘT G THÌ KHÔNG ĐƯỢC XÓA MÃ KH ĐÃ CÓ TẠI CỘT AG
Xin xem chi tiết trong File
Code của em
Em xin cảm ơn!
-----------
Em thấy code trên, nếu Sheet TH dữ liệu nhiều thì chạy chậm, Có thể giúp em cải tiến code
Em viết code như sau:
Tại Sheet TH, lấy tên khách hàng ở cột G, Tìm tại Cột BE của Sheet MA, nếu tìm được thì lấy qua một cột (Cột BF) và gán nó vào Cột AG của Sheet TH tại dòng tương ứng.
Ví dụ: Tại dòng thứ 9 của Sheet TH, Cell G9 không có Tên khách hàng, Cell AG9 đã có sẵn Mã KH, khi chạy code nó làm mất Mã KH tại cell AG9!!!. Em muốn sửa code, nếu KHÔNG CÓ TÊN KHÁCH HÀNG TẠI CỘT G THÌ KHÔNG ĐƯỢC XÓA MÃ KH ĐÃ CÓ TẠI CỘT AG
Xin xem chi tiết trong File
Code của em
PHP:
Sub TimMaKH()
Dim i As Long
Dim arrRes, arrSrc
Dim n1 As Range, rTmp As Range
With ActiveSheet
arrSrc = .Range(.[G9], .[G65536].End(3)).Resize(, 27).Value
End With
With Sheets("MA")
Set n1 = .Range(.[BE10], .[BE1000].End(3))
End With
ReDim arrRes(1 To UBound(arrSrc, 1), 1 To 1)
For i = 1 To UBound(arrSrc, 1)
Set rTmp = n1.Find(arrSrc(i, 1), , xlValues, xlWhole)
If Not rTmp Is Nothing Then
'If arrSrc(i, 1) <> "" Then
arrRes(i, 1) = rTmp.Offset(, 1)
'End If
End If
Next i
ActiveSheet.Range("AG9").Resize(UBound(arrRes, 1)).Value = arrRes
End Sub
-----------
Em thấy code trên, nếu Sheet TH dữ liệu nhiều thì chạy chậm, Có thể giúp em cải tiến code