Tìm và thay thế dữ liệu

Liên hệ QC

ngocthanhxuan

Thành viên mới
Tham gia
19/10/09
Bài viết
7
Được thích
0
Em đang có thắc mắc nhờ các thầy cô trên diễn đàn hướng dẫn em về macro Tìm và thay thế dữ liệu bên sheet khác.

em có Sheet1 là sheet chứa dữ liệu (dữ liệu cũ, dữ liệu mới), và Sheet2 cột A là cột tìm và sẽ thay thế.

Em muốn là khi nhấn nút thì macro sẽ tự động tìm dữ liệu từ Sheet2 cột A và tìm trên Sheet1 vùng dữ liệu cũ, dữ liệu mới.
 

File đính kèm

Bạn xài cái ni:

PHP:
Option Explicit
Sub ThayDL()
 Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
 
 Set Sh = Sheet1:                   Sheet2.Select
 Set Rng = Sh.Range(Sh.[B1], Sh.[B65500].End(xlUp))
 For Each Cls In Range([a2], [a2].End(xlDown))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      sRng.Value = Cls.Offset(, 1).Value
   End If
 Next Cls
End Sub

Hi vọng giúp được bạn ít nhiều.
 
Upvote 0
Em đang có thắc mắc nhờ các thầy cô trên diễn đàn hướng dẫn em về macro Tìm và thay thế dữ liệu bên sheet khác.

em có Sheet1 là sheet chứa dữ liệu (dữ liệu cũ, dữ liệu mới), và Sheet2 cột A là cột tìm và sẽ thay thế.

Em muốn là khi nhấn nút thì macro sẽ tự động tìm dữ liệu từ Sheet2 cột A và tìm trên Sheet1 vùng dữ liệu cũ, dữ liệu mới.
Tại sao bạn không dùng hàm VLOOKUP nhỉ?
PHP:
=VLOOKUP(A2,Sheet1!$B:$C,2,0)
 
Upvote 0
PHP:
Option Explicit
Sub ThayDL()
 Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
 
 Set Sh = Sheet1:                   Sheet2.Select
 Set Rng = Sh.Range(Sh.[B1], Sh.[B65500].End(xlUp))
 For Each Cls In Range([a2], [a2].End(xlDown))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      sRng.Value = Cls.Offset(, 1).Value
   End If
 Next Cls
End Sub

Hi vọng giúp được bạn ít nhiều.

Dạ hình như thầy làm lộn sheet rồi ạh Em muốn kết quả tìm được sẽ ghi vào cột A bên Sheet2
tức là giá trị tìm là tìm là bên Sheet 2 cột A
vùng tìm là Sheet 1 Cột B và kết quả lấy là cột C
 
Upvote 0
Dạ hình như thầy làm lộn sheet rồi ạh Em muốn kết quả tìm được sẽ ghi vào cột A bên Sheet2
tức là giá trị tìm là tìm là bên Sheet 2 cột A
vùng tìm là Sheet 1 Cột B và kết quả lấy là cột C
bạn sửa dòng này lại sRng.Value = Cls.Offset(, 1).Value Thành Cls.Value = sRng.Offset(, 1).Value
 
Upvote 0
Dạ hình như thầy làm lộn sheet rồi ạh Em muốn kết quả tìm được sẽ ghi vào cột A bên Sheet2
tức là giá trị tìm là tìm là bên Sheet 2 cột A
vùng tìm là Sheet 1 Cột B và kết quả lấy là cột C
Hihi, tới hột vịt còn "lộn" chứ đừng nói người ta, lộn là chuyện thường
Hình như bạn muốn kết quả ở cột có màu vàng vàng phải hông? nếu đúng vậy bạn có thể sử dụng code này:
Mã:
Public Sub timthay()
  With Range([a2], [a1000].End(xlUp)).Offset(0, 1)
    .FormulaR1C1 = "=IF(COUNTIF(Sheet1!R2C2:R10C2,Sheet2!RC[-1])=0,"""",VLOOKUP(Sheet2!RC[-1],Sheet1!R2C2:R10C3,2,0))"
    .Value = .Value
  End With
End Sub
 
Upvote 0
Hihi, tới hột vịt còn "lộn" chứ đừng nói người ta, lộn là chuyện thường
Hình như bạn muốn kết quả ở cột có màu vàng vàng phải hông? nếu đúng vậy bạn có thể sử dụng code này:
Mã:
Public Sub timthay()
  With Range([a2], [a1000].End(xlUp)).Offset(0, 1)
    .FormulaR1C1 = "=IF(COUNTIF(Sheet1!R2C2:R10C2,Sheet2!RC[-1])=0,"""",VLOOKUP(Sheet2!RC[-1],Sheet1!R2C2:R10C3,2,0))"
    .Value = .Value
  End With
End Sub
Thay đổi vào ngay dữ liệu luôn anh cò ơi (làm tại cột A, Hỏng phải làm sang cột B)
VLOOKUP là vầy đây:
PHP:
Sub Test()
  Dim Clls As Range, RepVal
  On Error Resume Next
  With Sheet2
    For Each Clls In .Range(.[a2], .[A65536].End(xlUp))
      RepVal = Evaluate("Vlookup(" & Clls.Address & ",Sheet1!B:C,2,0)")
      Clls.Replace Clls.Value, RepVal
    Next
  End With
End Sub
Hic... Bài này chẳng xứng dùng VBA tí nào!
 
Upvote 0
Web KT

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

Back
Top Bottom