Code Tìm và thay thế (1 người xem)

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

hoanglocphat

Thành viên thường trực
Tham gia
27/1/13
Bài viết
260
Được thích
30
Chào các bạn!
Nhờ các bạn giúp viết code" Tìm và thay thế" như sau:
Tại sheet SoVT
Tìm từ cell D11 trở xuống. Nếu có các từ giống cell F3 thì thay thế = khoảng trắng
Ví dụ: tại cell F3: khi chọn "Natri Silicat" thì trong các cell D1, D12 có các từ "Natri Silicat" thì thay "Natri Silicat" thành khoảng trắng
Mỗi khi chọn tại cell F3 xong thì code tự động tìm và thay thế
Xin cảm ơn!
--------
Pass sheet là ddn
 

File đính kèm

Các Bạn giúp mình code trên với
************
Code trong file là do mình st trên GPE
 
Upvote 0
Các Bạn giúp mình code trên với
************
Code trong file là do mình st trên GPE

cái này dùng Find method được mà?
file bi clock, crack cũng được mà hỏng thích
chỉ tìm và thay thế một trường hợp duy nhất là "Natri silicat" thôi hả?, nếu vậy nhấn Ctrl F tìm thay cái cùm từ đó bằng khoảng trắng được rồi, đâu cần code?
 
Upvote 0
cái này dùng Find method được mà?
file bi clock, crack cũng được mà hỏng thích
chỉ tìm và thay thế một trường hợp duy nhất là "Natri silicat" thôi hả?, nếu vậy nhấn Ctrl F tìm thay cái cùm từ đó bằng khoảng trắng được rồi, đâu cần code?
Ở bài 1 đã nói pass sheet là ddn
Mỗi khi thay đổi chọn ở cell F3 (chọn Validation) thì sẽ thay thế các từ ở từ cell D11 trở xuống mà giống cell F3 thì thay thế = khoảng trắng ( nói chung khi chọn mục validation thì sẽ thay thế)
 
Upvote 0
Ở bài 1 đã nói pass sheet là ddn
Mỗi khi thay đổi chọn ở cell F3 (chọn Validation) thì sẽ thay thế các từ ở từ cell D11 trở xuống mà giống cell F3 thì thay thế = khoảng trắng ( nói chung khi chọn mục validation thì sẽ thay thế)
Anh ý hỏi thế để biết yêu cầu mà, chứ anh ý làm kiểu gì cũng ra ah.
PHP:
Sub Find()
Dim Rng As Range, i As Long
Set Rng = Sheets("SoVT").Range("D11", Sheets("SoVT").[D65000].End(xlUp))
For i = 1 To Rng.Rows.Count
    If InStr(Rng(i, 1), Sheets("SoVT").Range("F3")) Then
        Rng(i, 1).Replace What:="Natri Silicat", Replacement:=" ", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End If
Next
End Sub
Ví dụ bạn thử test đoạn đơn giản trên xem sao nhé
 
Upvote 0
Anh ý hỏi thế để biết yêu cầu mà, chứ anh ý làm kiểu gì cũng ra ah.
PHP:
        Rng(i, 1).Replace What:="Natri Silicat", Replacement:=" ", LookAt:=xlPart, _
Ví dụ bạn thử test đoạn đơn giản trên xem sao nhé
Code tìm và thay thế mỗi khi chọn ở F3, chứ kg riêng cho "Natri Silicat"
Cảm ơn bạn!
 
Upvote 0
Code tìm và thay thế mỗi khi chọn ở F3, chứ kg riêng cho "Natri Silicat"
Cảm ơn bạn!
Máy mình đang đơ quá, thay natri =sheets("SoVT).[F3] đi bạn
Hoặc bạn dùng đoạn này cũng được
PHP:
Sub timkiemgido()
Dim Rng As Range, i As Long, Tmp As String
Set Rng = Sheets("SoVT").Range("D11", Sheets("SoVT").[D65000].End(xlUp))
With Sheets("SoVT")
Tmp = UCase(.[F3])
For i = 1 To Rng.Rows.Count
    If UCase(Rng(i, 1)) Like "*" & Tmp & "*" Then
        Rng(i, 1).Replace What:=Tmp, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End If
Next
End With
Set Rng = nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Ở bài 1 đã nói pass sheet là ddn
Mỗi khi thay đổi chọn ở cell F3 (chọn Validation) thì sẽ thay thế các từ ở từ cell D11 trở xuống mà giống cell F3 thì thay thế = khoảng trắng ( nói chung khi chọn mục validation thì sẽ thay thế)
Thử thế này
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$F$3" Then Exit Sub
   [D:D].Replace Target, ""
End Sub
 
Upvote 0
Thử thế này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$F$3" Then Exit Sub
   [COLOR=#ff0000][D:D].Replace Target, ""[/COLOR]
End Sub

Code này có khả năng sẽ không chạy trên một vài máy nào đó (không biết được là máy nào)
Nhưng nếu thay dòng màu đỏ thành [D:D].Replace Target, "", xlPart thì ăn chắc liền --=0
(Code liên quan đến Find and Replace phải được viết rõ ràng)
Ngoài ra, do tác giả có dùng Protect sheet nên phải có công đoạn Unprotect ở trước code mới xong
 
Upvote 0
Code này có khả năng sẽ không chạy trên một vài máy nào đó (không biết được là máy nào)
Nhưng nếu thay dòng màu đỏ thành [D:D].Replace Target, "", xlPart thì ăn chắc liền --=0
(Code liên quan đến Find and Replace phải được viết rõ ràng)
Ngoài ra, do tác giả có dùng Protect sheet nên phải có công đoạn Unprotect ở trước code mới xong
Thầy NDU/anh/chị gpe có thể giải thích thêm tại sao nếu ko có xlPart lại ko chạy ở 1 số máy? Trên cùng 1 máy, e ko có tham số xlPart, thường thì e vẫn chạy được, nhưng thỉnh thoảng lại ko được,phải tắt hết các file cel đi rồi chạy lại code thì lại đươc.
 
Upvote 0
Thầy NDU/anh/chị gpe có thể giải thích thêm tại sao nếu ko có xlPart lại ko chạy ở 1 số máy? Trên cùng 1 máy, e ko có tham số xlPart, thường thì e vẫn chạy được, nhưng thỉnh thoảng lại ko được,phải tắt hết các file cel đi rồi chạy lại code thì lại đươc.
Tham số thứ 3 của hàm Replace là tìm Xlpart hoặc Xlwhole, nếu máy tính đang ở chế độ Xlwhole thì code trên sẽ không tìm được cụm cần thay thế. Vậy đó.
 
Upvote 0
xlWhole: Tìm toàn bộ
xlPart: Tìm một phần

Câu này "nếu máy tính đang ở chế độ Xlwhole" e chưa hiểu? tức là cài đặt trong Excel\option ạ?
 
Upvote 0
Câu này "nếu máy tính đang ở chế độ Xlwhole" e chưa hiểu? tức là cài đặt trong Excel\option ạ?

Tức là vầy:
- Bạn quét chọn vùng dữ liệu và Ctrl + F (hoặc Ctrl + H)
- Bạn tìm thứ gì đó và có check mục "Match entire cell contents" ---> Tức là tìm chính xác (trong VBA sẽ tương đương với xlWhole)
- Giờ bạn chạy code VBA nhưng không ghi rõ là tìm theo kiểu xlPart hay xlWhole thì mặc định Excel sẽ xem như bạn tìm theo kiểu của lần trước (tức xlWhole) ---> Dẫn đến sai bét (trong khi cái chúng là cần là tìm gần đúng: xlPart)
-------------
Nói tóm lại: với Find Method, nếu không ghi rõ ràng thì Excel sẽ lấy các thông số trước đó bạn đã dùng (dùng bằng tay hoặc code)
 
Upvote 0

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

Back
Top Bottom