Nhờ các bạn giúp mình dò tìm theo khoảng cho trước

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

nilt02

Thành viên hoạt động
Tham gia
19/3/08
Bài viết
119
Được thích
17
Giới tính
Nam
Mình có file excel này gửi các bạn tham khảo.

Mình muốn tạo 1 cột Danh sách lấy từ cột A với điều kiện là cột C (DATA) phải ở trong khoảng cho trước từ cột F,G.
Nếu khoảng nào có Name trùng nhau thì chỉ lấy tên 1 tỉnh thôi.

Mình đã thử filter trong các khoảng này nhưng như vậy thì thủ công và không thể làm với nhiều dữ liệu thay đổi được..hix.
Mình có demo ví dụ trong 1 vài khoảng để các bạn dễ theo dõi.
Các bạn thử giúp mình xem đc không ?
Cảm ơn các bạn nhiều nhé :)
 

File đính kèm

Lần chỉnh sửa cuối:
Mình có file excel này gửi các bạn tham khảo.

Mình muốn tạo 1 cột Danh sách lấy từ cột A với điều kiện là cột C (DATA) phải ở trong khoảng cho trước từ cột F,G.
Nếu khoảng nào có Name trùng nhau thì chỉ lấy tên 1 tỉnh thôi.

Mình đã thử filter trong các khoảng này nhưng như vậy thì thủ công và không thể làm với nhiều dữ liệu thay đổi được..hix.
Mình có demo ví dụ trong 1 vài khoảng để các bạn dễ theo dõi.
Các bạn thử giúp mình xem đc không ?
Cảm ơn các bạn nhiều nhé :)
Bài này công thức làm sao mần đây???
Dùng VBA thì không có vấn đề gì.
 
dạ vâng bác, nếu không xài đc công thức thì VBA cũng đc ạ, nhưng em ko biết cách, bác chỉ rõ hơn đc ko ạ ? ^_^
thank bac
Copy code vào 1 module
Cú pháp tại ô H2 =gom($A$2:$C$27,F2:G2)
Kéo xuống. Hy vọng là trúng
PHP:
Function Gom(ByVal Rng As Range, ByVal Dk As Range) As String
Dim data(), I&, J&
data = Rng.Value
With CreateObject("scripting.dictionary")
   For I = 1 To UBound(data)
      If data(I, 3) >= Dk(1) Then
         If data(I, 3) < Dk(2) Then
            .Item(data(I, 1)) = ""
         End If
      End If
   Next
   Gom = Join(.keys, ", ")
End With
End Function
 
Mình có file excel này gửi các bạn tham khảo.

Mình muốn tạo 1 cột Danh sách lấy từ cột A với điều kiện là cột C (DATA) phải ở trong khoảng cho trước từ cột F,G.
Nếu khoảng nào có Name trùng nhau thì chỉ lấy tên 1 tỉnh thôi.

Mình đã thử filter trong các khoảng này nhưng như vậy thì thủ công và không thể làm với nhiều dữ liệu thay đổi được..hix.
Mình có demo ví dụ trong 1 vài khoảng để các bạn dễ theo dõi.
Các bạn thử giúp mình xem đc không ?
Cảm ơn các bạn nhiều nhé :)

Hàm JoinIf mình viết đã lâu, có thể áp dụng cho bài này:
Mã:
Function JoinIf(ByVal Delimiter As String, ByVal CriteriaArray, ByVal Criteria, Optional ByVal TargetArray) As String
  Dim aTmpCrit, aTmpDes, tmp1, tmp2, arr(), dic As Object
  Dim bComp As Boolean, Chk As Boolean
  Dim I As Long, J As Long, k As Long, dTmpVal As Double
  Set dic = CreateObject("Scripting.Dictionary")
  If IsMissing(TargetArray) Then TargetArray = CriteriaArray
  aTmpCrit = ConvertTo1DArray(CriteriaArray)
  aTmpDes = ConvertTo1DArray(TargetArray)
  If (Not IsArray(aTmpCrit)) Or (Not IsArray(aTmpDes)) Then Exit Function
  On Error Resume Next
  bComp = (InStr("<>=", Left(Criteria, 1)) > 0)
  For I = LBound(aTmpDes) To UBound(aTmpDes)
    tmp1 = aTmpCrit(I): tmp2 = aTmpDes(I)
    If bComp And Len(Criteria) Then
      dTmpVal = CDbl(aTmpCrit(I))
      If Evaluate(dTmpVal & Criteria) Then dic.Add tmp2, ""
    Else
      If (Left(Criteria, 1) = "!") Then
        If Not (UCase(tmp1) Like UCase(Mid(Criteria, 2, Len(Criteria)))) Then dic.Add tmp2, ""
      Else
        If (UCase(tmp1) Like UCase(Criteria)) Then dic.Add tmp2, ""
      End If
    End If
  Next
  If dic.Count Then
    arr = dic.keys
    JoinIf = Join(arr, Delimiter)
  End If
End Function
Cú pháp: JoinIf(Dấu phân cách, Mảng điều kiện, Điều kiện, Mảng kết quả)
Áp dụng tại cell H2:
Mã:
=JoinIf(", ",[B][COLOR=#ff0000]($C$2:$C$27>=F2)*($C$2:$C$27<G2)[/COLOR][/B],1,$A$2:$A$27)
Công thức mảng, phải kết thúc bằng tổ hợp phím Ctrl + Shift + Enter
Với hàm này thì điều kiện AND hay OR gì đều chơi tuốt (do người dùng tự phát biểu trong biểu thức Mảng điều kiện)
 

File đính kèm

Mình có file excel này gửi các bạn tham khảo.
Mình muốn tạo 1 cột Danh sách lấy từ cột A với điều kiện là cột C (DATA) phải ở trong khoảng cho trước từ cột F,G.
Nếu khoảng nào có Name trùng nhau thì chỉ lấy tên 1 tỉnh thôi.
Mình đã thử filter trong các khoảng này nhưng như vậy thì thủ công và không thể làm với nhiều dữ liệu thay đổi được..hix.
Mình có demo ví dụ trong 1 vài khoảng để các bạn dễ theo dõi.
Các bạn thử giúp mình xem đc không ?
Cảm ơn các bạn nhiều nhé :)
Góp vui thêm một cách :
 

File đính kèm

Lần chỉnh sửa cuối:
Góp vui thêm một cách :

Code này chưa đúng nha, vì yêu cầu của người ta là:
Mình có file excel này gửi các bạn tham khảo.

Mình muốn tạo 1 cột Danh sách lấy từ cột A với điều kiện là cột C (DATA) phải ở trong khoảng cho trước từ cột F,G.
Nếu khoảng nào có Name trùng nhau thì chỉ lấy tên 1 tỉnh thôi.
Để làm được vụ lấy duy nhất thì Dictionary là giải pháp đơn giản nhất (khỏi suy nghĩ). Ngoài ra cũng có thể dùng phương pháp xử lý chuỗi (dùng hàm InStr chẳng hạn)
 
Cảm ơn 2 bác ndu và bác quanghai, cách của các bác rấthay và chính xác ạ ^_^

Cảm ơn các bạn nhiệt tình giúp mình J

 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom