Làm sao để tạo hàm thay thế giống Ctrl + H cho nhiều ô (1 người xem)

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

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

linhvsb

Thành viên mới
Tham gia
29/1/09
Bài viết
17
Được thích
2
Em muốn hỏi có anh chị nào biết cách thay thế các chữ
ở nhiều ô excel cùng một lúc không ạ?
VD ở file đính kèm em cần thay các ô có chữ
số, tên, vị trí, điểm, nhóm...
bằng các chữ khác (không phải chữ in hoa đâu ạ)
thì làm thế nào?
Em mà dùng lệnh Ctrl + H thay từng ô một thì chắc chết quá **~** !$@!!
vì em có những hơn 100 file như thế cơ ạ!!!
Em xin cảm ơn các anh chị nhiều nhiều -=.,,
 

File đính kèm

  • e.JPG
    e.JPG
    29.1 KB · Đọc: 271
Bạn muốn thay thế cho những vùng dữ liệu nào thì bôi đen vùng dữ liệu đó trước sau đó dùng lệnh thay thế. Khi đó lệnh thay thế sẽ chỉ có tác dụng trong những vùng được bạn bôi đen còn những vùng khác thì không.
Nhìn file đính kèm thì chắc hơn 100 file của bạn cũng đều có Form giống hết nhau và vị trí các ô được thay thế cũng giống nhau, nếu vậy thì bạn nên tự ghi lấy một marco và áp dụng cho những file tiếp sau đó.
 
Upvote 0
100 files hay 100 sheets?

Nếu là 100 files thì nên biến nó thành 100 sheets trong 1 file mà thôi, có lẽ được?
Sau đó xài cái củ khoai này
Chú í khi dùng: tại sheet3 tại D2:D6 là các từ tiếng Việt cần thay vô các từ tại C2:C6 ở tất thảy các sheets còn lại, trừ sheet3 này!
Macro đang chỉ thay 1 nhóm trên mỗi sheet; nếu trên 1 sheet có nhiều nhóm cần thay thì phải thêm vài dòng lệnh trong Code

PHP:
Sub Replace1()
 Dim Sh As Worksheet
 ReDim Matric(5) As String:            ReDim Repl(5) As String
 Dim jJ As Byte
 Sheet3.Select
 For jJ = 2 To 6
    Matric(jJ - 1) = Cells(jJ, "C").Value:      Repl(jJ - 1) = Cells(jJ, "D").Value
 Next jJ
 For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "Sheet3" Then
        For jJ = 1 To 5
            Sh.Cells.Find(what:=Matric(jJ), LookIn:=xlFormulas, _
                     lookat:=xlWhole).Value = Repl(jJ)
        Next jJ
    End If
 Next Sh
End Sub
 
Upvote 0
Nếu là 100 files thì nên biến nó thành 100 sheets trong 1 file mà thôi, có lẽ được?
Sau đó xài cái củ khoai này
Chú í khi dùng: tại sheet3 tại D2:D6 là các từ tiếng Việt cần thay vô các từ tại C2:C6 ở tất thảy các sheets còn lại, trừ sheet3 này!
Macro đang chỉ thay 1 nhóm trên mỗi sheet; nếu trên 1 sheet có nhiều nhóm cần thay thì phải thêm vài dòng lệnh trong Code

Có thể để các file cũng được - chứ gom lại thì mất công

Vấn đề là:
+ tên file đặt theo quy luật là tốt nhất: data01.xls, data02.xls,....,data100.xls - KHI đó cho vào vòng lặp mở - xử lý - đóng theo tên file

+ hoặc là Danh sách tên File gõ vào thành 1 list
Vài góp ý nhỏ
.
 
Upvote 0
Có thể để các file cũng được - chứ gom lại thì mất công

Vấn đề là:
+ tên file đặt theo quy luật là tốt nhất: data01.xls, data02.xls,....,data100.xls - KHI đó cho vào vòng lặp mở - xử lý - đóng theo tên file

+ hoặc là Danh sách tên File gõ vào thành 1 list
Vài góp ý nhỏ
.
Có thể cũng chẳng cần phải làm gì cả (đặt tên file, gõ tên file thành 1 list) ---> Miển sao chúng nằm cùng 1 thư mục là được ---> Lúc đó ta đã có cái này:
http://www.giaiphapexcel.com/forum/showthread.php?t=17212
 
Upvote 0
Anh/chị có thể hướng dẫn em cụ thể hơn được không ạ?
tình hình là trình độ của em vẫn còn i tờ ít lắm ạ +-+-+-+
Bạn lấy vài file, nén lại rồi gữi lên đây xem thử thế nào nhé
Ngoài ra bạn có thể tự nghiên cứu chương trình: Advanced Find and Replace ---> Nó cho phép tìm và thay thế ký tự nằm trên nhiều file đấy (tìm chương trình trên Google hoặc ra tiệm mua đĩa về cài)
 
Upvote 0
Dạ em gửi thử 2 file trong rar đây ạ.
tiếc là excel của em không bằng tiếng Anh -\\/.
em cần thay hàng loạt file từ tiếng "củ chuối" sang tiếng Việt ;;;;;;;;;;;
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ em gửi thử 2 file trong rar đây ạ.
tiếc là excel của em không bằng tiếng Anh -\\/.
em cần thay hàng loạt file từ tiếng "củ chuối" sang tiếng Việt ;;;;;;;;;;;
Tết hơi lười... giờ làm cho bạn đây!
- Bạn giãi nén file đính kèm, bên trong tôi giã lập 9 file (tiếng củ chuối) và 1 file Main (là file để chạy code)
- Bạn mở file Main lên xem, bên trong tôi đã tạo 1 danh mục các từ cần tìm và thay thế
- Bấm nút chạy code để thử ---> Nó sẽ mở ra 1 hộp Open, bạn duyệt đến thư mục chứa file cần thay thế, bấm Ctrl + A để chọn toàn bộ (hoặc chọn 1 vài file tùy ý) ---> Sau khi code chạy xong, mở mấy file củ chuối ấy lên kiểm tra lại xem các từ trong đó đã được thay hết chưa nha
- Vì đang là thử nghiệm nên tôi vẫn chưa dám chắc chắn còn gì trục trặc hay không (Đã test rất nhiều lần và thấy chạy tốt) ---> Vì thế bạn hãy copy các file "củ chuối" này ra 1 thư mục khác và thử nghiệm, đến lúc hài lòng rồi hãy làm thật
- Trong file Main, bạn hãy điền thêm vào 2 cột A và B các từ khác nếu muốn ---> Cứ điền liên tục hết dòng này đến dòng khác (nhớ đừng chừa dòng trống trong dử liệu nhập) theo quy tắc: Cột A là tiếng "Củ chuối" và cột B là tiếng Việt
- Bạn lưu ý: Với code tôi viết trong file thì nó sẽ thay hết toàn bộ các từ mà nó tìm thấy trong tất cả các sheet và trong tất cả các file mà bạn chọn (đương nhiên trừ file Main)
Code của tôi như sau:
PHP:
Sub MF_Replace()
  Dim i As Long, Clls As Range, Ws As String
  Application.ScreenUpdating = False
  With Application.FileDialog(1)
    .AllowMultiSelect = True: .Show
    For i = 1 To .SelectedItems.Count
      Ws = Replace(.SelectedItems(i), .InitialFileName, "")
      If ThisWorkbook.Name <> Ws Then
        Workbooks.Open .SelectedItems(i)
        For Each Clls In ThisWorkbook.ActiveSheet.[A1].CurrentRegion.Resize(, 1)
          Windows(Ws).Activate: ActiveSheet.Cells.Replace Clls, Clls.Offset(, 1)
        Next Clls
        Windows(Ws).Close True
      End If
    Next i
  End With
  Application.ScreenUpdating = True
End Sub
Nhờ các cao thủ cải tiến thêm
 

File đính kèm

Upvote 0
cho em hỏi là tại sao phải có đến 9 files tiếng củ chuối? vì nếu em chỉ dùng file main chạy riêng thì thấy nó vẫn hoạt động tốt ạ.
PS: cảm ơn bác ndu96081631 nhờ có bác mà em như trút được gánh nặng ngàn cân /-*+/ ngủ ngon được rồi --=--
 
Lần chỉnh sửa cuối:
Upvote 0
cho em hỏi là tại sao phải có đến 9 files tiếng củ chuối? vì nếu em chỉ dùng file main chạy riêng thì thấy nó vẫn hoạt động tốt ạ.
PS: cảm ơn bác ndu96081631 nhờ có bác mà em như trút được gánh nặng ngàn cân /-*+/ ngủ ngon được rồi --=--
Không phải... mấy cái "củ chuối" ấy tôi đã nói là "giã lập" mà
- Bạn giãi nén file đính kèm, bên trong tôi giã lập 9 file (tiếng củ chuối) và 1 file Main (là file để chạy code)
---> Tức dùng để thí nghiệm ---> Khi nào bạn thí nghiệm "sướng tay" rồi thì xóa nó đi, chừa lại 1 file Main là đủ
Ẹc.. Ẹc... Bạn thiệt tình ghê...
 
Upvote 0
dạ, hình như cái này chỉ thay thế ở sheet hiện hành thôi ạ.
em mạn phép "được voi đòi... 2 Bà Trưng" cái =)
có cách nào thay hết các sheet luôn không?
 
Upvote 0
dạ, hình như cái này chỉ thay thế ở sheet hiện hành thôi ạ.
em mạn phép "được voi đòi... 2 Bà Trưng" cái =)
có cách nào thay hết các sheet luôn không?
Ai da... hôm trước test rất kỹ, rõ ràng nó thay hết tất cả các sheet, giờ lại...
Bạn bấm Alt + F11 vào xem code, và thay toàn bộ chúng thành:
PHP:
Sub MF_Replace()
  Dim i As Long, Clls As Range, Ws As String, Sh As Worksheet
  Application.ScreenUpdating = False
  With Application.FileDialog(1)
    .AllowMultiSelect = True: .Show
    For i = 1 To .SelectedItems.Count
      Ws = Replace(.SelectedItems(i), .InitialFileName, "")
      If ThisWorkbook.Name <> Ws Then
        Workbooks.Open .SelectedItems(i)
        For Each Clls In ThisWorkbook.ActiveSheet.[A1].CurrentRegion.Resize(, 1)
          Windows(Ws).Activate
          For Each Sh In ActiveWorkbook.Worksheets
            Sh.Cells.Replace Clls, Clls.Offset(, 1)
          Next Sh
        Next Clls
        Windows(Ws).Close True
      End If
    Next i
  End With
  Application.ScreenUpdating = True
End Sub
Đúng ra chức năng Find and Replace có khả năng thay thế trên tất cả các sheet.. nhưng không hiểu sao trong quá trình thí nghiệm thì khi được khi không ---> Thôi thì cho nó 1 vòng lập xuyên qua các sheet cho chắc ăn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Các bạn thử tham khảo cái này xem thế nào
Sub ThayTheTatCa()
Dim I
For I = 1 To Sheets.Count
Sheets(I).Cells.Replace What:="Từ cần tìm", Replacement:="Từ cần thay", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next
End Sub
Nếu không muốn phức tạp thì bản thân lệnh Ctrl+H đã có sẵn chức năng thay thế toàn bộ Workbook, vì mặc định của nó là Sheet nên có lẽ các bạn không để ý, hãy bấm Ctrl+H và chọn Option>> thì sẽ có thêm các lựa chọn.
Code trên là tôi ghi lại macro của lệnh Ctrl+H.
 
Upvote 0
Các bạn thử tham khảo cái này xem thế nào
Sub ThayTheTatCa()
Dim I
For I = 1 To Sheets.Count
Sheets(I).Cells.Replace What:="Từ cần tìm", Replacement:="Từ cần thay", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next
End Sub
Nếu không muốn phức tạp thì bản thân lệnh Ctrl+H đã có sẵn chức năng thay thế toàn bộ Workbook, vì mặc định của nó là Sheet nên có lẽ các bạn không để ý, hãy bấm Ctrl+H và chọn Option>> thì sẽ có thêm các lựa chọn.
Code trên là tôi ghi lại macro của lệnh Ctrl+H.
Bạn ơi! Yêu cầu đâu phải chỉ thay thế trong 1 file:
- Thay thế trên nhiều file
- Mỗi file gồm nhiều sheet
Vậy đấy
Còn 1 việc xin hỏi bạn: Tôi cũng biết chức năng Find and Replace có khả năng thay thế trong nhiều sheet (bằng tùy chọn With in = Workbook) ---> Thế nhưng viết vào code thì viết thế nào?
Theo như tôi biết thì trong code không có tùy chọn này! Chẳng qua Excel "nhớ" lại lần thao tác cuối cùng ta Set là gì thì lần sau nó làm y thế!
Nếu muốn chủ động hơn, theo bạn phải viết code thế nào đây?
 
Upvote 0
Tôi không kịp xem ky các bài đã viết nên đã mạo muội viết như thế để tham khảo thôi.
- Vì lệnh replace không có tham số with in nên đành phải dùng vòng lặp For Next để duyệt qua các Sheet.
- Việc thao tác với nhiều file tôi chưa nghĩ ra cách nào khác ngoài các mở lần lượt từng file như bạn đã làm.
- Tôi sẽ nghiên cứu cách thao tác với file mà không cần mở nó lên như kiểu với Access, tuy nhiên sẽ phải dùng đền biện pháp can thiệp mạnh.
Thân.
 
Upvote 0
Chào các bác,
em gặp 1 vấn đề là code của bác ndu96081631 thay thế tất cả những chữ nào nó gặp ngay cả khi nằm trong từ khác.
ví dụ: em cần thay No nghĩa là số
thì ở văn bản cần thay nếu có chữ Note hoặc Noel, nó sẽ cho ra sốtesốel.
Thế có chết không cơ chứ lị =)
 
Upvote 0
Chào các bác,
em gặp 1 vấn đề là code của bác ndu96081631 thay thế tất cả những chữ nào nó gặp ngay cả khi nằm trong từ khác.
ví dụ: em cần thay No nghĩa là số
thì ở văn bản cần thay nếu có chữ Note hoặc Noel, nó sẽ cho ra sốtesốel.
Thế có chết không cơ chứ lị =)
Bạn làm thế nào, theo tôi đoán bạn làm như sau:
Replace(String,"No","Số")
Cái này tôi thấy nhiều chương trình viết lỗi:
Ví dụ: Để tránh nói bậy trong diễn đàn người ta thay thế các từ bậy bằng dấu *** như sau: Lồng sẽ thành L***g. Như vậy thật bất tiện và đôi khi ảnh hưởng đến văn bản lành mạnh.
Để giải quyết vấn đề này bạn hãy thêm 1 khoảng trống vào trước hoặc sau hoặc cả trước cả sau nếu chắc chắn rằng từ đó đứng độc lập như sau:
Replace(String," No "," Số ")
 
Upvote 0
Chào các bác,
em gặp 1 vấn đề là code của bác ndu96081631 thay thế tất cả những chữ nào nó gặp ngay cả khi nằm trong từ khác.
ví dụ: em cần thay No nghĩa là số
thì ở văn bản cần thay nếu có chữ Note hoặc Noel, nó sẽ cho ra sốtesốel.
Thế có chết không cơ chứ lị =)
Uh... đúng... tôi sơ ý chổ này, nhưng sửa lại cũng dể lắm
Bạn thay đoạn:
Sh.Cells.Replace Clls, Clls.Offset(, 1)
thành:
Sh.Cells.Replace Clls, Clls.Offset(, 1), xlWhole
là xong hết mọi chuyện
 

File đính kèm

Upvote 0
Đây là đoạn mã replace không cần Open file. Các bạn thử tham khảo và cho ý kiến xem nhé. Chẳng biết có nhanh hơn so với Open hay không.
Dim dba As DAO.Database, rs As DAO.Recordset
Set dba = OpenDatabase("D:\BookVD.xls", False, False, "Excel 8.0;HDR=Yes;")
Set rs = dba.OpenRecordset("SELECT * FROM [" & dba.TableDefs(0).Name & "]")
Dim I As Integer
rs.MoveFirst
Do While Not rs.EOF
rs.Edit
For I = 0 To rs.Fields.Count - 1
rs.Fields(I) = Replace(rs.Fields(I), "Tu Can Tim", "Tu Thay The")
Next I
rs.Update
rs.MoveNext
Loop
rs.Close
dba.Close
 
Upvote 0
to bác hoa35ktxd em chạy thử thì nó báo lỗi ạ.
em cũng chẳng hiểu mô tê gì, nên cứ chụp quả màn hình các bác xem hộ :-=.
For all: yêu các bác nhiều lắm í }}}}}
 

File đính kèm

  • error.JPG
    error.JPG
    38 KB · Đọc: 95
Upvote 0
Web KT

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

Back
Top Bottom