Tìm tư động và thay thế dữ kiện (1 người xem)

Liên hệ QC

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

kieudaigia

Thành viên mới
Tham gia
16/4/09
Bài viết
12
Được thích
0
Các bác cho em hỏi làm thế nào để cho excel tự động tìm và thay thế những dư liệu có sẵn,
Ví dụ em muốn tim tất cả trong file nhưng ai là Nguyen van A thi thay bang 123; nguyen van B thi thay bang 456; nguyen van C thay bang 789...VV,
xin các bác giúp đỡ
 
Mở file excel lên, dùng lệnh Ctrl+F, rồi làm như hình vẽ rồi chon Replace all

Untitled.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Chính xác là Ctrl+H : TÌm kiếm và thay thế
Còn Ctrl+F : Tìm kiếm
 
Upvote 0
Mở file excel lên, dùng lệnh Ctrl+F, rồi làm như hình vẽ rồi chon Replace all

Chính xác là Ctrl+H : TÌm kiếm và thay thế
Còn Ctrl+F : Tìm kiếm

Người ta hỏi vầy:

Các bác cho em hỏi làm thế nào để cho excel tự động tìm và thay thế những dư liệu có sẵn,
Ví dụ em muốn tim tất cả trong file nhưng ai là Nguyen van A thi thay bang 123; nguyen van B thi thay bang 456; nguyen van C thay bang 789...VV,
xin các bác giúp đỡ
Cái chổ VV màu đỏ ấy có nghĩa là THAY THẾ RẤT NHIỀU
Đặt trường hợp cần thay thế 200 từ, mình Ctrl + H đến chừng nào?
 
Upvote 0
Giải quyết vấn đề một cách tổng thể:

Cách 1, thủ công, tức là dùng công thức:

- Ghi dữ liệu luật chuyển đổi ra một sheet. Tức là có 2 cột, cột tên (Nguyen Van A) và cột trị cần đổi sang (123). Đặt tên sheet này là Dictionary.
- Bên sheet dữ liệu chính, dùng hàm INDEX + MATCH để dò tên và lấy mã
- Copy/Paste Value
- Giấu (hide) sheet Dictionary

Cách 2, dùng code:

- Ghi dữ liệu luật chuyển đổi ra một sheet. Tức là có 2 cột, cột tên (Nguyen Van A) và cột trị cần đổi sang (123). Đặt tên sheet này là Dictionary.
- Giấu (hide) sheet Dictionary

- Code:
. Đọc dữ liệu từ sheet Dictionary, chép vào một dictionary object
. Đọc dữ liệu từ sheet data. Tra dcitionary và thay thế
. Hết
 
Upvote 0
em ko rành về VBA lắm, bác cho em 1 file ví dụ được ko àh?
trước em toàn cho vào Auto Correct thôi, như vẫn lâu.
xin cảm ơn bác
Giải quyết vấn đề một cách tổng thể:

Cách 1, thủ công, tức là dùng công thức:

- Ghi dữ liệu luật chuyển đổi ra một sheet. Tức là có 2 cột, cột tên (Nguyen Van A) và cột trị cần đổi sang (123). Đặt tên sheet này là Dictionary.
- Bên sheet dữ liệu chính, dùng hàm INDEX + MATCH để dò tên và lấy mã
- Copy/Paste Value
- Giấu (hide) sheet Dictionary

Cách 2, dùng code:

- Ghi dữ liệu luật chuyển đổi ra một sheet. Tức là có 2 cột, cột tên (Nguyen Van A) và cột trị cần đổi sang (123). Đặt tên sheet này là Dictionary.
- Giấu (hide) sheet Dictionary

- Code:
. Đọc dữ liệu từ sheet Dictionary, chép vào một dictionary object
. Đọc dữ liệu từ sheet data. Tra dcitionary và thay thế
. Hết
 
Upvote 0
Vâng em bất cẩn quá
ở file của em 3 sheet: sheet 1 là danh sách , sheet 2 là dư liệu, và sheet3 là kết quả thay thế các dữ liệu từ sheet 1 vào sheet 2.


Có muốn VÍ DỤ gì đó thì phải có file bạn à!
Không có dữ liệu để thử thì mọi lời gợi ý cũng chỉ là bàn bạc thôi
 

File đính kèm

Upvote 0
Vâng em bất cẩn quá
ở file của em 3 sheet: sheet 1 là danh sách , sheet 2 là dư liệu, và sheet3 là kết quả thay thế các dữ liệu từ sheet 1 vào sheet 2.

Thế thì cũng chẳng cần quái gì đến code.
Tại sheet DULIEU, cell D1 bạn gõ công thức:
Mã:
=VLOOKUP(A1,Dictionary!$A$1:$B$156,2,0)
Kéo fill xuống
Xong, copy nguyên cột D, paste values vào cột A. Cuối cùng, xoá cột D đi
 
Upvote 0
cảm ơn bác cai này cũng nhanh, n vẫn thủ công, bác giúp em có cách nào nó tự sinh ra sheet Ketqua ko ah?
Thế thì cũng chẳng cần quái gì đến code.
Tại sheet DULIEU, cell D1 bạn gõ công thức:
Mã:
=VLOOKUP(A1,Dictionary!$A$1:$B$156,2,0)
Kéo fill xuống
Xong, copy nguyên cột D, paste values vào cột A. Cuối cùng, xoá cột D đi
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Mình dùng mô hình dùng 2 vòng lặp Do until...loop
@thầy ndu: thầy dùng mảng 1 cách đơn giản nhất để em nắm bắt với. tks

Nếu chạy trực tiếp trên Cell thì nên dùng Find Method (chỉ có 1 vòng lập)
Nếu dùng mảng thì sẽ kết hợp với Scripting.Dictionary nữa để tằng tốc:
Mã:
Public dic As Object
Sub LoadDictionary(ByVal SourceTable, ByVal TargetTable)
  Dim lR As Long
  Dim tmp1 As String, tmp2 As String
  Dim aSrc, aTarget
  On Error Resume Next
  aSrc = SourceTable: aTarget = TargetTable
  Set dic = CreateObject("Scripting.Dictionary")
  dic.CompareMode = vbTextCompare
  For lR = LBound(aSrc, 1) To UBound(aSrc, 1)
    tmp1 = CStr(aSrc(lR, 1))
    tmp2 = CStr(aTarget(lR, 1))
    If Len(tmp1) Then
      If Not dic.Exists(tmp1) Then dic.Add tmp1, tmp2
    End If
  Next
End Sub
Sub Main()
  Dim arr, tmp As String
  Dim lR As Long
  Dim SourceTable, TargetTable
  On Error Resume Next
  If dic Is Nothing Then
    SourceTable = Sheets("Dictionary").Range("A1:A1000").Value
    TargetTable = Sheets("Dictionary").Range("B1:B1000").Value
    LoadDictionary SourceTable, TargetTable
  End If
  With Sheets("du lieu").Range("A1:A1000")
    arr = .Value
    For lR = 1 To UBound(arr, 1)
      tmp = CStr(arr(lR, 1))
      If Len(tmp) Then
        If dic.Exists(tmp) Then arr(lR, 1) = dic.Item(tmp)
      End If
    Next
    .Value = arr
  End With
End Sub
Cho toàn bộ code trên vào module, chạy sub Main sẽ thấy kết quả
 
Upvote 0

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

Back
Top Bottom