Tìm kiếm tổ hợp nhiều biến với bảng có hàng và cột biến đổi

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vic_it

Thành viên mới
Tham gia
31/7/10
Bài viết
16
Được thích
1
Kính gửi các cụ,
Em đang có 1 dữ liệu như file mô tả:
- Bảng 1 Gồm có 1 bảng có nhiều hàng và cột, dữ liệu là dạng chữ, có thể có khoảng trắng. Có ưu tiên hàng 1 so với 2 hàng còn lại. Bảng này e lấy transpose từ một sheet khác.
- Bảng 2-x gồm nhiều bảng, trong mỗi bảng có các tổ hợp từ 2,3,4 điều kiện tìm kiếm..Tách thành các bảng 2-1-a, 2-1-b....tương ứng các tổ hợp nhỏ để tìm kiếm.
- Vòng lặp tìm kiếm có dạng:
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 1 trả về "ưu tiên 1"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 1 trả về "ưu tiên 2"
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 2 và Bảng1-Hàng3 trả về "ưu tiên 2"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 2 và Bảng 1-hàng 3 trả về "ưu tiên 2"
- Dữ liệu đầu ra có dạng:
Tìm thấy Phá Quân Lộc tồn ở bảng 1 hàng 1: "ưu tiên 1"
Tìm thấy Tham Lang Hoả Linh ở Bảng1-hàng 2: "ưu tiên 2"

Em có mô tả chi tiết ở trong file excel, file này đang ở dạng thô, ko có 1 công thức nào.
Em thấy món này vượt ngoài khả năng dùng hàm cũng như vba của em, nên nhờ các cụ tư vấn. Nếu chỉ dùng hàm thì tốt quá. Nếu không khả năng phải dùng vba can thiệp.

Cụ nào cao thủ giúp e với ạ, rất chân thành cám ơn.
 

File đính kèm

  • TimKiemNhieuBien-v0.1.xlsx
    11.6 KB · Đọc: 16
Kính gửi các cụ,
Em đang có 1 dữ liệu như file mô tả:
- Bảng 1 Gồm có 1 bảng có nhiều hàng và cột, dữ liệu là dạng chữ, có thể có khoảng trắng. Có ưu tiên hàng 1 so với 2 hàng còn lại. Bảng này e lấy transpose từ một sheet khác.
- Bảng 2-x gồm nhiều bảng, trong mỗi bảng có các tổ hợp từ 2,3,4 điều kiện tìm kiếm..Tách thành các bảng 2-1-a, 2-1-b....tương ứng các tổ hợp nhỏ để tìm kiếm.
- Vòng lặp tìm kiếm có dạng:
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 1 trả về "ưu tiên 1"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 1 trả về "ưu tiên 2"
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 2 và Bảng1-Hàng3 trả về "ưu tiên 2"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 2 và Bảng 1-hàng 3 trả về "ưu tiên 2"
- Dữ liệu đầu ra có dạng:
Tìm thấy Phá Quân Lộc tồn ở bảng 1 hàng 1: "ưu tiên 1"
Tìm thấy Tham Lang Hoả Linh ở Bảng1-hàng 2: "ưu tiên 2"

Em có mô tả chi tiết ở trong file excel, file này đang ở dạng thô, ko có 1 công thức nào.
Em thấy món này vượt ngoài khả năng dùng hàm cũng như vba của em, nên nhờ các cụ tư vấn. Nếu chỉ dùng hàm thì tốt quá. Nếu không khả năng phải dùng vba can thiệp.

Cụ nào cao thủ giúp e với ạ, rất chân thành cám ơn.
Nhờ các cụ giúp thì chờ hơi lâu vì đến bao giờ lên chức cụ thì mới đủ điều kiện giúp.
 
Hề hề, món phong thủy này hay, có điều tớ chưa nghiên cứu đến. Phức tạp hơn tính can chi của lục mạch thần kiếm.
Chịu khó dùng Ctrl+F đi.
Mã:
Kinh nghiệm cho tớ biết:
- cụ: xếp vào hàng cao tuổi, ít cũng phải trên 80.
- cao thủ: 1 chú bé được gọi là ku Thảo, có thể dưới 08.
 
Em nghĩ trên này nhiều xê-u thảo mà, chẳng qua các cụ chưa rảnh múa võ thôi ợ :)
Tôi là dân chuyên văn. Người Việt theo lệ "văn trọng võ khinh".
Giải quyết vấn đề mà bạn coi như múa võ [Sơn Đông] thì bạn coi thường người giải bài quá.
 
Tôi là dân chuyên văn. Người Việt theo lệ "văn trọng võ khinh".
Giải quyết vấn đề mà bạn coi như múa võ [Sơn Đông] thì bạn coi thường người giải bài quá.
Cụ lại nặng nề quá. Em lại coi văn võ như nhau, có nghĩa đều có sự tôn trọng ngang nhau, giống cặp Tả Hữu.
Khó quá thì nhờ cụ nào cả văn cả võ giúp em vậy ha :p
Bài đã được tự động gộp:

Hề hề, món phong thủy này hay, có điều tớ chưa nghiên cứu đến. Phức tạp hơn tính can chi của lục mạch thần kiếm.
Chịu khó dùng Ctrl+F đi.
Mã:
Kinh nghiệm cho tớ biết:
- cụ: xếp vào hàng cao tuổi, ít cũng phải trên 80.
- cao thủ: 1 chú bé được gọi là ku Thảo, có thể dưới 08.

E cũng đang xem có giải pháp không cụ ạ. Tìm nhiều nhưng khả năng có hạn, nên chưa ra được phương án nào khả thi. Cụ có gợi ý gì không ngoài Ctrl + F vì việc đó e cũng vẫn đang thực hiện.
 
Lần chỉnh sửa cuối:
Nôm na gọi người ta là cụ thì ít ai muốn giúp. Nếu muốn nhanh được hỗ trợ thì nên đổi cách xưng hô.
Hỗ trợ chỗ nào? Người ta chỉ muốn xem Sơn Đông mãi võ. Và người ta nhất quyết rằng cách xưng hô võ biền này thích hợp.
Tiếng Việt có câu: "chơi với C**, C** liếm mặt"
 
- - - - -
 
Lần chỉnh sửa cuối:
Em xin đổi cách xưng hô, Anh/Chị nào có phương án/giải pháp hoặc gợi ý thì gửi giúp e tham khảo.
Chắc do văn phong từ diễn đàn khác nên ảnh hưởng, mong Anh/Chị bỏ qua nếu có mạo phạm.

Trân trọng,
Bài đã được tự động gộp:

Cái này là tử vi à bạn?
Vầng ạ.
 
Lần chỉnh sửa cuối:
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 1 trả về "ưu tiên 1"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 1 trả về "ưu tiên 2"
Nếu giá trị tìm kiếm của Bảng 2-1-a gặp Bảng1-hàng 2 và Bảng1-Hàng3 trả về "ưu tiên 2"
Tương tự, nếu giá trị tìm kiếm của các Bảng 2-1-b và 2-1-c cũng gặp ở Bảng 1-hàng 2 và Bảng 1-hàng 3 trả về "ưu tiên 2"
Chỗ này nghĩa là: Nếu toàn bộ tổ hợp trong 1 dòng bảng 2 xuất hiện trên cùng 1 dòng của bảng 1 thì trả về 1, nếu không thì trả về 2 ?
 
Chỗ này nghĩa là: Nếu toàn bộ tổ hợp trong 1 dòng bảng 2 xuất hiện trên cùng 1 dòng của bảng 1 thì trả về 1, nếu không thì trả về 2 ?
Anh/Chị xem giúp hình đính kèm, vì sợ mô tả chưa thể hiện hết nghĩa, hoặc mô tả sai, phần logic e đang không chắc. Cám ơn Anh/Chị đã hỗ trợ.
 

File đính kèm

  • Mô tả-1.png
    Mô tả-1.png
    204 KB · Đọc: 15
Anh/Chị xem giúp hình đính kèm, vì sợ mô tả chưa thể hiện hết nghĩa, hoặc mô tả sai, phần logic e đang không chắc. Cám ơn Anh/Chị đã hỗ trợ.
Code dưới đây áp dụng cho số liệu file bài 1.
Kết quả điền vào vùng H7:H12

Bạn test lại xem kết quả trả về xem thế nào rồi tính tiếp
Mã:
Option Explicit

Sub xxx()
Dim Nguon
Dim DK
Dim KQ
Dim mCSD
Dim cCSD
Dim congSL
Dim Tam
Dim i, j, k, x, z, t

Nguon = Sheet1.Range("C2:S4")
DK = Sheet1.Range("C7:F12")

ReDim KQ(1 To UBound(DK), 1 To 1)
ReDim mCSD(1 To 200, UBound(Nguon)) '200: <-- thay doi theo so luong sao
ReDim cCSD(UBound(Nguon))

With CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Nguon)
        For j = 1 To UBound(Nguon, 2)
            If Trim(Nguon(i, j)) <> "" Then
                Tam = Nguon(i, j)
                If InStr(Nguon(i, j), "(") Then
                    Tam = Left(Nguon(i, j), Len(Nguon(i, j)) - 3)
                End If
                
                If .exists(Tam) = False Then
                    k = .Count + 1
                    .Item(Tam) = k
                    
                    mCSD(k, 0) = mCSD(k, 0) + 1
                    mCSD(k, mCSD(k, 0)) = i
                End If
            End If
        Next j
    Next i
    
    For i = 1 To UBound(DK)
        congSL = 0
        For j = 1 To UBound(DK, 2)
            If Trim(DK(i, j)) = "" Then Exit For
            congSL = congSL + 1
            
            Tam = DK(i, j)
            If InStr(DK(i, j), "(") Then
                Tam = Left(DK(i, j), Len(DK(i, j)) - 3)
            End If
            
            If .exists(Tam) Then
                k = .Item(Tam)
                
                For z = 1 To mCSD(k, 0)
                    t = mCSD(k, z)
                    cCSD(t) = cCSD(t) + 1
                    cCSD(0) = cCSD(0) + 1
                Next z
            End If
        Next j
        
        If cCSD(0) Then
            k = 2
            For j = 1 To UBound(cCSD)
                If cCSD(j) = congSL Then
                    k = 1
                    Exit For
                End If
            Next j
            For j = 0 To UBound(cCSD)
                cCSD(j) = 0
            Next j
            
            KQ(i, 1) = k
        End If
    Next i
End With

With Sheet1.Range("H7").Resize(UBound(KQ), UBound(KQ, 2))
    .Clear
    .Value = KQ
    .Borders.LineStyle = 1
End With
End Sub
 
nhé.

Bài này phong thủy nên tớ cũng đam mê. Có điều bảng bố trí xấu quá, nhìn muốn đập màn hình. Nội dung thì ghi tương tự, mà đọc chả thấy tương tự gì cả, không biết có phải copy xuống rồi ra trém gió với khách hẹn không đây?
Đi xem bói mà gặp thầy cho xem cái bảng này là xác định mất toi 1 ngày của cuộc đời mà chả được gì rồi. Lỗi tè le, không đáng tin tưởng tẹo nào.
1712585795154.png
 
nhé.

Bài này phong thủy nên tớ cũng đam mê. Có điều bảng bố trí xấu quá, nhìn muốn đập màn hình. Nội dung thì ghi tương tự, mà đọc chả thấy tương tự gì cả, không biết có phải copy xuống rồi ra trém gió với khách hẹn không đây?
Đi xem bói mà gặp thầy cho xem cái bảng này là xác định mất toi 1 ngày của cuộc đời mà chả được gì rồi. Lỗi tè le, không đáng tin tưởng tẹo nào.
View attachment 300101
E đang làm rõ yêu cầu đây ạ, vì bản thân em cũng không tính hết các trường hợp được ạ. Lá số nó tổ hợp nhiều thứ, mọi thứ đều đi từ không biết đến chỗ vỡ ra, rồi biết thôi ạ.
E đang ngồi xem lại là yêu cầu sai thiếu và cần bổ xung ạ.
 
Cố gắng làm bảng phải rõ ràng, phân chia riêng biệt, phong thủy phải có màu sắc phân biệt, càng nhiều màu càng làm khách hàng phân tâm và trém gió rẹt rẹt.
Trém trúng thì tốt, trém suỵt thì đừng hại nhau là được. --=0 --=0 --=0
Và phải cố gắng để nó là lá số tử vi nhé, chứ lệch lạc sang lá số tử vong thì căng lắm. :wallbash::wallbash::wallbash:
 
nhé.

Bài này phong thủy nên tớ cũng đam mê. Có điều bảng bố trí xấu quá, nhìn muốn đập màn hình. Nội dung thì ghi tương tự, mà đọc chả thấy tương tự gì cả, không biết có phải copy xuống rồi ra trém gió với khách hẹn không đây?
Đi xem bói mà gặp thầy cho xem cái bảng này là xác định mất toi 1 ngày của cuộc đời mà chả được gì rồi. Lỗi tè le, không đáng tin tưởng tẹo nào.
View attachment 300101
Nhiều thớt đưa bài lên với mục đích làm ảo số liệu mà vẫn dược giải quyết đấy thôi bạn.
 
Tuy k liên quan nhưng ai có thể giúp m vs đc k ạ, m k biết đăng bài ở đâu cả huhuhu
Câu 4: điền dữ liệu cho cột đơn giá dựa vào Mã hàng và Đơn giá tra trong bảng 1 (lưu ý: tùy theo loại để lấy giá trị tương ứng
Câu 5: Tính thành tiền= Số lượng bán * Đơn giá
Câu 6: Ghi chú: Nếu số lượng bán >100 hoặc Thành tiền >20000000 thì ghi chú là "GH tận nơi", ngược lại để trống
Câu 7: Xét lãi lỗ, nếu mặt hàng Loại 1 và Thành tiền trên 15000000 hoặc mặt hàng là Loại 2 và Thành tiền trên 10000000 là Lãi, ngược lại là Lỗ
Câu 8: Thống kê doanh thu các sản phẩm theo tên hàng và loại tương ứng
 

File đính kèm

  • 434157908_389820287266006_5399197253780508223_n.jpg
    434157908_389820287266006_5399197253780508223_n.jpg
    127.6 KB · Đọc: 7
Web KT
Back
Top Bottom