viethoamdf
Thành viên mới

- Tham gia
- 20/4/13
- Bài viết
- 40
- Được thích
- 2
Cần giúp đỡ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.
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.
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.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
Số lượng lấy ngẫu nhiên tại G & F có giới hạn thế nào?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.
- 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.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
Bài này công thức không biết làm.- 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 đỡ.
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
Chắc có lẽ đến thế này thôi.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.
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
Sao không Sort Bảng 1, cột Code từ nhỏ đến lớn cho dễ,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.