Gộp các dữ liệu thực vào thành một ô (1 người xem)

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

bakien84

Thành viên mới
Tham gia
4/6/17
Bài viết
5
Được thích
0
Giới tính
Nam
Em mới tham gia diễn đàn và đang có một vướng mắc, xin các anh chị giúp đỡ.
Vấn đề của em như sau ạ:
Sau khi e dùng vlookup để tìm ra các giá trị thực thoả mãn điều kiện, thì em muốn lập một danh sách các giá trị không thoả mãn điều kiện thành một cột thì làm như nào ạ. Em xin đính kèm VD để các anh chị xem ạ.
Em xin chân thành cảm ơn các anh chị.
 

File đính kèm

Em mới tham gia diễn đàn và đang có một vướng mắc, xin các anh chị giúp đỡ.
Vấn đề của em như sau ạ:
Sau khi e dùng vlookup để tìm ra các giá trị thực thoả mãn điều kiện, thì em muốn lập một danh sách các giá trị không thoả mãn điều kiện thành một cột thì làm như nào ạ. Em xin đính kèm VD để các anh chị xem ạ.
Em xin chân thành cảm ơn các anh chị.
Nếu dùng công thức chắc "tèo". Dùng tạm 3 hàm VBA xem sao. Vì chưa hiểu rõ yêu cầu.
 

File đính kèm

Nếu dùng công thức chắc "tèo". Dùng tạm 3 hàm VBA xem sao. Vì chưa hiểu rõ yêu cầu.
anh ơi em muốn thay trường dữ liệu tìm kiếm từ dạng cột sang một bảng số liệu (là các số liệu trong phần bảng màu dùng vlookup ở dưới so với bảng gốc) thì làm thế nào hả anh. Phần ghép dữ liệu từ cột vào bảng gốc vậy là đúng mong muốn của em rồi anh ạ. Em thử đổi phạm vi trong hàm mà không được ạ
 
Đây aj, em gửi lại file để anh hình dung cho dễ ạ. Em cám ơn sự giúp đỡ của anh ạ.
 

File đính kèm

Thấy tiến bộ vượt bậc trong quy trình viết code đấy!
Tuy nhiên tôi có một góp ý nhỏ: Đối với bất kỳ bài toán, bạn nên tìm cách quy nó về 1 bài toán khác thông dụng nhất
Để chi? Để mai này code của bạn còn có cơ hội áp dụng.
Nếu cứ chăm chú giải quyết nhanh gọn bài toán hiện tại thì cùng lắm code của bạn sẽ cho tốc độ nhanh, giải quyết triệt để công việc hiện tại nhưng... mai này chắc chắn code ấy chỉ để ngắm chứ không phát triển thêm được gì cả
--------------------------------------------
Bài toán của chúng ta như sau:
- Tìm dữ liệu có trong bảng 1 và không có trong bảng 2
- Tìm dữ liệu có trong bảng 2 và không có trong bảng 1
- Tìm dữ liệu có trong cả 2 bảng

Vậy chỉ với hàm COUNTIF là bạn đã có ngay được mảng kết quả. Công đoạn còn lại là nối các giá trị trong mảng thành chuỗi là xong!
Ngày trước tôi viết hàm JoinText như sau:
Mã:
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aTmp, arr(), Item, tmp As String
  Dim i As Long, n As Long
  'On Error Resume Next
  For i = LBound(Arrays) To UBound(Arrays)
    aTmp = Arrays(i)
    If Not IsArray(aTmp) Then aTmp = Array(aTmp)
    For Each Item In aTmp
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        n = n + 1
        ReDim Preserve arr(1 To n)
        arr(n) = tmp
      End If
    Next
  Next
  If n Then JoinText = Join(arr, Delimiter)
End Function
Hàm có tác dụng nối chuỗi nhiều điều kiện và dùng được rất nhiều dạng bài toán (chỉ cần bạn phát biểu điều kiện chính xác).
Với bài toán của chúng ta, tôi kết hợp JoinText và COUNTIF sẽ ra ngay kết quả
1> Tìm dữ liệu có trong bảng 1 mà không có trong bảng 2:
Mã:
=JoinText(",", IF((COUNTIF($B$19:$K$28,$B$5:$K$14)=0),$B$5:$K$14,NA()))
2> Tìm dữ liệu có trong bảng 2 mà không có trong bảng 1:
Mã:
=JoinText(",", IF((COUNTIF($B$5:$K$14,$B$19:$K$28)=0)*($B$19:$K$28<>""),$B$19:$K$28,NA()))
2> Tìm dữ liệu có trong cả 2 bảng
Mã:
=JoinText(",", IF(COUNTIF($B$5:$K$14,$B$19:$K$28)*($B$19:$K$28<>""),$B$19:$K$28,NA()))
Tất cả các công thức đều phải Ctrl + Shift + Enter
-------------------------------------------------------
Ở đây code của tôi chỉ làm công việc đơn giản là: NỐI CÁC PHẦN TỬ KHÁC ERROR TRONG MẢNG THÀNH CHUỖI. Vậy cái nào không muốn nối vào thì cứ cho nó = ERROR hết. Cách triển khai điều kiện na ná như LOOKUP(2, 1/.... hoặc SUMPRODUCT((...)*(....)*(....)) mà ta vẫn thường làm
------------------------------------------------------
Tôi không dám nói code tôi hay hơn bạn nhưng tôi cảm thấy code của tôi xài hoài mà không phải viết lại hay chỉnh sửa gì cả là.. khoái rồi
 

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

Back
Top Bottom