Tìm kiếm và hiển thị dữ liệu giữa 02 bảng (1 người xem)

Liên hệ QC

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

viethoamdf

Thành viên mới
Tham gia
20/4/13
Bài viết
40
Được thích
2
Kính gửi các anh, chị,
Em có 02 bảng (bảng 1 và bảng 2) như file đính kèm. Em muốn lấy dữ liệu từ bảng 1 qua bảng 2 theo điều kiện (có trong file đính kèm).
Kính mong anh, chị giúp đỡ.
Trân trọng cảm ơn.
 

File đính kèm

Kính gửi các anh, chị,
Em có 02 bảng (bảng 1 và bảng 2) như file đính kèm. Em muốn lấy dữ liệu từ bảng 1 qua bảng 2 theo điều kiện (có trong file đính kèm).
Kính mong anh, chị giúp đỡ.
Trân trọng cảm ơn.

Cần làm rõ chỗ này:
1. Vì sao là A1:A5 xong là chuyển sang B10
2. A6 vì sao bị loại
 
Cần làm rõ chỗ này:
1. Vì sao là A1:A5 xong là chuyển sang B10
2. A6 vì sao bị loại
1. Cái đó là ngẫu nhiên (bảng 2) bạn ạ. Điền ngẫu nhiên ở G, F thì cột H sẽ hiển thị giá trị lấy từ bảng 1.
2. Vì là ngẫu nhiên, nên bỏ A6 ạ.

Cảm ơn bạn.
 
1. Cái đó là ngẫu nhiên (bảng 2) bạn ạ. Điền ngẫu nhiên ở G, F thì cột H sẽ hiển thị giá trị lấy từ bảng 1.
2. Vì là ngẫu nhiên, nên bỏ A6 ạ.

Cảm ơn bạn.
Số lượng lấy ngẫu nhiên tại G & F có giới hạn thế nào?

Bài này có lẽ phải dùng vba
 
Số lượng lấy ngẫu nhiên tại G & F có giới hạn thế nào?

Bài này có lẽ phải dùng vba
- Mình sẽ nhập ngẫu nhiên số 1 vào ô G2, thì ở ô F2 sẽ hiển thị A (tìm kiếm từ bảng 1). Vì bên bảng 1 có giá trị của A1, nên sẽ hiển thị ở H2 là 456.
- Mình nhập ngẫu nhiên số 2 vào ô G3, thì ở ô F2 sẽ hiển thị A vì số 2 nằm giữa số 1 và số 5 (cùng thuộc nhóm A, trong bảng 1). Giá trị của ô H3 sẽ là giá trị nhỏ nhất của 2 giá trị A1 và A5 (2 giá trị liền trước và liền sau của A2), sẽ là 123.
- Nhập số 9 vào ô G10, ô F10 sẽ hiển thị B (B9 không có giá trị hoặc error), giá trị ở ô H10 sẽ là "F" vì không có giá trị liền trước thuộc nhóm B trong bảng 1.

Mong bạn giúp đỡ.
 
- Mình sẽ nhập ngẫu nhiên số 1 vào ô G2, thì ở ô F2 sẽ hiển thị A (tìm kiếm từ bảng 1). Vì bên bảng 1 có giá trị của A1, nên sẽ hiển thị ở H2 là 456.
- Mình nhập ngẫu nhiên số 2 vào ô G3, thì ở ô F2 sẽ hiển thị A vì số 2 nằm giữa số 1 và số 5 (cùng thuộc nhóm A, trong bảng 1). Giá trị của ô H3 sẽ là giá trị nhỏ nhất của 2 giá trị A1 và A5 (2 giá trị liền trước và liền sau của A2), sẽ là 123.
- Nhập số 9 vào ô G10, ô F10 sẽ hiển thị B (B9 không có giá trị hoặc error), giá trị ở ô H10 sẽ là "F" vì không có giá trị liền trước thuộc nhóm B trong bảng 1.

Mong bạn giúp đỡ.
Bài này công thức không biết làm.
Làm thử với vba.
Một số ràng buộc của đầu bài chưa được chặt, tạm thời dùng code bên dưới
Chuột phải vào sheet tab sheet1, chọn view code, dán đoạn code dưới đây vào.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nguon
Dim Sort
Dim i, j, k, x, z, t
Dim rws
If Target.Column = 7 Then
    rws = Range("A1").End(xlDown).Row
    Nguon = Range("A2:C" & rws)
    rws = UBound(Nguon)
    For i = 1 To rws
        If k < Nguon(i, 2) Then k = Nguon(i, 2)
    Next i
    ReDim Sort(1 To k, 1 To 3)
    For i = 1 To rws
        For j = 1 To 3
            Sort(Nguon(i, 2), j) = Nguon(i, j)
        Next j
    Next i
    If Target > k Then
        MsgBox "Nhap code khac"
        Exit Sub
    End If
    If Target.Row > 2 Then
        For i = Target.Row - 1 To 2 Step -1
            If Target = Range("G" & i) Then
                MsgBox "Code nay da co. Nhap code khac"
                Exit Sub
            End If
        Next i
    End If
    If IsNumeric(Sort(Target, 3)) = True Then
        Target.Offset(, -1) = Sort(Target, 1)
        Target.Offset(, 1) = Sort(Target, 3)
    Else
        If Sort(Target, 1) <> "" Then Target.Offset(, -1) = Sort(Target, 1)
        For i = Target - 1 To 1 Step -1
            If Sort(i, 2) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = "" Then
                    Target.Offset(, -1) = Sort(Target, 1)
                    x = Sort(i, 3)
                    Exit For
                Else
                    If Target.Offset(, -1) = Sort(i, 1) Then
                        x = Sort(i, 3)
                        Exit For
                    End If
                End If
            End If
        Next i
        For i = Target + 1 To k
            If Sort(i, 2) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = Sort(i, 1) Then
                    z = Sort(i, 3)
                    Exit For
                End If
            End If
        Next i
        If x <> "" And z <> "" Then
            Target.Offset(, 1) = WorksheetFunction.Min(x, z)
        Else
            Target.Offset(, 1) = "F"
        End If
    End If
End If
End Sub
 
Bài này công thức không biết làm.
Làm thử với vba.
Một số ràng buộc của đầu bài chưa được chặt, tạm thời dùng code bên dưới
Chuột phải vào sheet tab sheet1, chọn view code, dán đoạn code dưới đây vào.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nguon
Dim Sort
Dim i, j, k, x, z, t
Dim rws
If Target.Column = 7 Then
    rws = Range("A1").End(xlDown).Row
    Nguon = Range("A2:C" & rws)
    rws = UBound(Nguon)
    For i = 1 To rws
        If k < Nguon(i, 2) Then k = Nguon(i, 2)
    Next i
    ReDim Sort(1 To k, 1 To 3)
    For i = 1 To rws
        For j = 1 To 3
            Sort(Nguon(i, 2), j) = Nguon(i, j)
        Next j
    Next i
    If Target > k Then
        MsgBox "Nhap code khac"
        Exit Sub
    End If
    If Target.Row > 2 Then
        For i = Target.Row - 1 To 2 Step -1
            If Target = Range("G" & i) Then
                MsgBox "Code nay da co. Nhap code khac"
                Exit Sub
            End If
        Next i
    End If
    If IsNumeric(Sort(Target, 3)) = True Then
        Target.Offset(, -1) = Sort(Target, 1)
        Target.Offset(, 1) = Sort(Target, 3)
    Else
        If Sort(Target, 1) <> "" Then Target.Offset(, -1) = Sort(Target, 1)
        For i = Target - 1 To 1 Step -1
            If Sort(i, 2) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = "" Then
                    Target.Offset(, -1) = Sort(Target, 1)
                    x = Sort(i, 3)
                    Exit For
                Else
                    If Target.Offset(, -1) = Sort(i, 1) Then
                        x = Sort(i, 3)
                        Exit For
                    End If
                End If
            End If
        Next i
        For i = Target + 1 To k
            If Sort(i, 2) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = Sort(i, 1) Then
                    z = Sort(i, 3)
                    Exit For
                End If
            End If
        Next i
        If x <> "" And z <> "" Then
            Target.Offset(, 1) = WorksheetFunction.Min(x, z)
        Else
            Target.Offset(, 1) = "F"
        End If
    End If
End If
End Sub

Mình đã dùng VBA nhưng còn 02 điểm:
1. Ô H2 và H10 cần hiển thị 02 giá trị giống nhau.
2. Ô H4 và H6 chưa có giá trị.
3. Các giá trị còn lại là tuyệt vời.
Khi nào có thời gian bạn nghiên cứu giúp.

Chân thành cảm ơn.
 

File đính kèm

Mình đã dùng VBA nhưng còn 02 điểm:
1. Ô H2 và H10 cần hiển thị 02 giá trị giống nhau.
2. Ô H4 và H6 chưa có giá trị.
3. Các giá trị còn lại là tuyệt vời.
Khi nào có thời gian bạn nghiên cứu giúp.

Chân thành cảm ơn.
Chắc có lẽ đến thế này thôi.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nguon
Dim Sort
Dim i, j, k, x, z, t
Dim rws
If Target.Column = 7 Then
    rws = Range("A1").End(xlDown).Row
    Nguon = Range("A2:C" & rws)
    rws = UBound(Nguon)
    For i = 1 To rws
        If k < Nguon(i, 2) Then k = Nguon(i, 2)
    Next i
    ReDim Sort(1 To k, 1 To 3)
    For i = 1 To rws
        For j = 1 To 3
            Sort(Nguon(i, 2), j) = Nguon(i, j)
        Next j
    Next i
    
    If Target > k Then
        MsgBox "Nhap code khac"
        Exit Sub
    End If
    If Target.Row > 2 Then
        For i = Range("G1000000").End(xlUp).Row To 2 Step -1
            If i <> Target.Row And Target = Range("G" & i) Then
                MsgBox "Code nay da co. Nhap code khac"
                Exit Sub
            End If
        Next i
    End If
    If Sort(Target, 3) <> "" And IsNumeric(Sort(Target, 3)) = True Then
        Target.Offset(, -1) = Sort(Target, 1)
        Target.Offset(, 1) = Sort(Target, 3)
    Else
        If Sort(Target, 1) <> "" Then Target.Offset(, -1) = Sort(Target, 1)
        For i = Target - 1 To 1 Step -1
            If Sort(i, 3) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = "" Then
                    Target.Offset(, -1) = Sort(i, 1)
                    x = Sort(i, 3)
                    Exit For
                Else
                    If Target.Offset(, -1) = Sort(i, 1) Then
                        x = Sort(i, 3)
                        Exit For
                    End If
                End If
            End If
        Next i
        For i = Target + 1 To k
            If Sort(i, 3) <> "" And IsNumeric(Sort(i, 3)) = True Then
                If Target.Offset(, -1) = Sort(i, 1) Then
                    z = Sort(i, 3)
                    Exit For
                End If
            End If
        Next i
        If x <> "" And z <> "" Then
            Target.Offset(, 1) = WorksheetFunction.Min(x, z)
        Else
            Target.Offset(, 1) = "F"
        End If
    End If
End If
End Sub
 
Lần chỉnh sửa cuối:
Anh, chị giúp anh cái này với. Loay hoay mãi mà em làm chưa ra.
Chân thành cảm ơn.
 
Web KT

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

Back
Top Bottom