Find and replace theo 2 điều kiện (2 người xem)

  • Thread starter Thread starter LYSM
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
Em chào các thầy cô, anh chị!
Nhờ các thầy cô, anh chị cho em xin code find and replace với 2 điều kiện như file đính kèm, em đã tìm các chủ đề tương tự nhưng code không áp dụng được với trường hợp của em mà em lại không biết chỉnh sửa code theo ý mình. Mong các thầy, cô, anh, chị giúp đỡ ạ.
Em cảm ơn nhiều!
 

File đính kèm

Đúng sai không thể là "hình như" được.
Kết quả đó là chạy từ Sub này, tặng bạn tùy chỉnh lại mấy chỗ địa chỉ các vùng cho phù hợp rồi sử dung (nếu đúng)
PHP:
Public Sub GPE()
Dim Dic As Object, sArr(), I As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("M2:M3").Value     '<---------------'
For I = 1 To UBound(sArr, 1)
    Dic.Add sArr(I, 1), ""
Next I
sArr = Range("K2:L11").Value    '<---------------------'
For I = 1 To UBound(sArr, 1)
    Dic.Add sArr(I, 1), sArr(I, 2)
Next I
sArr = Range("A2:D18").Value    '<---------------------'
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
    If Not Dic.Exists(sArr(I, 1)) Then
        If Dic.Exists(sArr(I, 3)) Then
            sArr(I, 3) = Dic.Item(sArr(I, 3))
        End If
    End If
Next I
Range("F2").Resize(UBound(sArr, 1), 4) = sArr   '<-----------------'
Set Dic = Nothing
End Sub
Em cảm ơn thầy, em thay đổi "sArr = Range("M2:M3").Value" thành
"sArr = Range("M2:M65000").Value"
thì code báo lỗi ạ
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    53 KB · Đọc: 18
Upvote 0
Bảng K:M ý nghĩa là thế nào?
Cột M, các ô M2, M3 có phải là đi cùng MSP 01SB01, 01SX01.

Theo ý bạn, cột M là danh sách chung?
Nếu cột M là danh sách chung, không liên quan tới MSP thì phải để riêng.

---
Gửi bạn lại đoạn code sửa theo hướng cột M là danh sách chung cho tất cả.
Mã:
Public Sub ThayThe()
Dim Nguon, Dk, r As Long

Nguon = Sheet1.Range("K1").CurrentRegion
With CreateObject("scripting.dictionary")
For r = 2 To UBound(Nguon)
.Add Nguon(r, 1), Nguon(r, 2)
Dk = Dk & " " & Nguon(r, 3)
Next r
Dk = Dk & " "

Nguon = Sheet1.Range("A1").CurrentRegion
For r = 2 To UBound(Nguon)
If .exists(Nguon(r, 3)) Then
If InStr(Dk, " " & Nguon(r, 1) & " ") = 0 Then
Nguon(r, 3) = .Item(Nguon(r, 3))
End If
End If
Next r
End With

With Sheet1
.Range("A1").CurrentRegion.ClearContents
.Range("A1").Resize(UBound(Nguon), UBound(Nguon, 2)) = Nguon
End With
End Sub

Vâng, đúng là cột M là danh sách chung ạ, khả năng diễn đạt của em kém nên làm phiền mọi người quá. Em cảm ơn nhiều ạ
 
Upvote 0
Web KT

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

Back
Top Bottom