Lấy dữ liệu trong cùng một "Sheets" sử dụng Vlookup trong VBA.

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

th7

Thành viên thường trực
Tham gia
3/3/15
Bài viết
215
Được thích
52
Giới tính
Nam
Chào bạn Befaint,

Hôm trước mình có bài viết " Xuất dữ liệu sang định dạng TXT theo một số yêu cầu đặc biệt "
Mình muốn bổ xung thêm một phần nữa mà sợ viết liền bài viết đó thì bị vi phạm nội quy nên mình có "Recipients" bạn vào bài viết mới để hỏi, nhưng ở trong mục đối thoại không có đính kèm tập tin nên mình đăng viết bài mới.

Do có nhiều loại linh kiện quá(có nhiều tọa độ tính toán khác nhau) nên mình mò code của Bạn để thêm một số loại linh kiện vào nữu và có khó khăn là "copy" hoặc đánh số sẽ lâu nên mình muốn sử dụng thêm chức năng tự dò tìm của VBA.

Mình nêu mong muốn nối tiếp của bài viết:

- Nếu mình dùng hàm thông thường thì có thể lấy được nhưng khi mình bỏ một tập tin có tọa độ mới vào thì mình cần xóa vùng dữ liệu cũ đi, vậy dùng hàm sẽ vô nghĩa, vậy nên mình nghĩ dùng VBA, mình có thử dùng Vlookup bằng VBA mà không được, chắc mình chưa hiểu rõ về hàm này.

- Mong muốn là tại cột "H" màu Vàng, khi mình nhập số tương ứng so với (database) từ "P:T" thì nó sẽ gọi dữ liệu qua tự động và để vào vùng màu Xanh tương ứng,

Bạn xem qua tập tin đính kèm mình gửi nha,
Cảm ơn Bạn.
 

File đính kèm

Chào bạn Befaint,
Minh có sửa lại được rồi,
Nhưng mình muốn hỏi vấn đề này
Mình có làm Code để Vlookup được rồi, nhưng mỗi lần nhập giá trị vào cột "H" muốn có được giá trị cần lấy thì mình phải "Assign Macro" thì giá trị mới hiện lên,
Bạn cho mình hỏi là có cách nào mà mình chỉ nhập cột "H" thì các cột cần tìm bên cạnh hiện lên không và ngược lại, nếu mình xóa giá trị nào thì nó tự mất các cột giá trị tương ứng,
Chờ sự góp ý của Bạn.
 

File đính kèm

Chép code này vào sheets("CadCoordinate")
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, myrange As Range
        If Target.Count = 1 And Target.Column = 8 Then
        i = Target.Row
        Set myrange = Sheets("CadCoordinate").Range("P2:T50")
            If Target.Value <> "" Then
                Cells(i, 9) = Application.VLookup(Cells(i, 8), myrange, 2, False)
                Cells(i, 10) = Application.VLookup(Cells(i, 8), myrange, 3, False)
                Cells(i, 11) = Application.VLookup(Cells(i, 8), myrange, 4, False)
                Cells(i, 12) = Application.VLookup(Cells(i, 8), myrange, 5, False)
        Else
                  Cells(i, 9) = ""
                Cells(i, 10) = ""
                Cells(i, 11) = ""
                Cells(i, 12) = ""
        End If
    End If
End Sub
 
Chép code này vào sheets("CadCoordinate")
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, myrange As Range
        If Target.Count = 1 And Target.Column = 8 Then
        i = Target.Row
        Set myrange = Sheets("CadCoordinate").Range("P2:T50")
            If Target.Value <> "" Then
                Cells(i, 9) = Application.VLookup(Cells(i, 8), myrange, 2, False)
                Cells(i, 10) = Application.VLookup(Cells(i, 8), myrange, 3, False)
                Cells(i, 11) = Application.VLookup(Cells(i, 8), myrange, 4, False)
                Cells(i, 12) = Application.VLookup(Cells(i, 8), myrange, 5, False)
        Else
                  Cells(i, 9) = ""
                Cells(i, 10) = ""
                Cells(i, 11) = ""
                Cells(i, 12) = ""
        End If
    End If
End Sub
Chào bạn Befaint,
....................................
Chờ sự góp ý của Bạn.
 
Chép code này vào sheets("CadCoordinate")
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, myrange As Range
        If Target.Count = 1 And Target.Column = 8 Then
        i = Target.Row
        Set myrange = Sheets("CadCoordinate").Range("P2:T50")
            If Target.Value <> "" Then
                Cells(i, 9) = Application.VLookup(Cells(i, 8), myrange, 2, False)
                Cells(i, 10) = Application.VLookup(Cells(i, 8), myrange, 3, False)
                Cells(i, 11) = Application.VLookup(Cells(i, 8), myrange, 4, False)
                Cells(i, 12) = Application.VLookup(Cells(i, 8), myrange, 5, False)
        Else
                  Cells(i, 9) = ""
                Cells(i, 10) = ""
                Cells(i, 11) = ""
                Cells(i, 12) = ""
        End If
    End If
End Sub
Ôi, kết quả như mong muốn,
Cám ơn bạn "phuocam" hỗ trợ rất nhiều.
 
Web KT

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

Back
Top Bottom