Lọc giá trị liên quan nhiều giá trị? (1 người xem)

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

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

790312

Thành viên hoạt động
Tham gia
7/4/08
Bài viết
181
Được thích
8
Nhờ các bác viết giùm marco lọc giá trị, yêu cầu e gửi trong file đính kèm. Chân thành cảm ơn trước.
 

File đính kèm

Dạ cảm ơn Chú, nhưng sao giá trị cột G, H, I không copy tương ứng qua sheet2 luôn vậy Chú? File yêu cầu cháu để trống cho rõ ý chính.

Ai biết đâu, thấy trống rỗng thì lấy qua làm gì, lúc đầu tôi lấy tất thì ra toàn các số 0 nhìn rối mắt nên bỏ qua.
Thay Sub cũ bằng cái này thử xem:
PHP:
Public Sub GPE()
Dim Dic As Object, sArr(), dArr(), Txt As String
Dim I As Long, J As Long, K As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 11).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 11)
K = -2
For I = 1 To UBound(sArr, 1)
    Txt = sArr(I, 1) & sArr(I, 2) & "#" & sArr(I, 3) & "#" & sArr(I, 5)
    If Not Dic.Exists(Txt) Then
        K = K + 3
        Dic.Add Txt, K
        For J = 1 To 3
            dArr(K, J) = sArr(I, J)
            dArr(K + 1, J) = sArr(I, J)
            dArr(K + 2, J) = sArr(I, J)
        Next J
    End If
        Rws = Dic.Item(Txt)
        If Abs(sArr(I, 6)) > dArr(Rws, 6) Then
            For J = 4 To 11
                dArr(Rws, J) = Abs(sArr(I, J))
            Next J
        End If
        If Abs(sArr(I, 10)) > dArr(Rws + 1, 10) Then
            For J = 4 To 11
                dArr(Rws + 1, J) = Abs(sArr(I, J))
            Next J
        End If
        If Abs(sArr(I, 11)) > dArr(Rws + 2, 11) Then
            For J = 4 To 11
                dArr(Rws + 2, J) = Abs(sArr(I, J))
            Next J
        End If
Next I
With Sheet2
    .Range("A4:K1000").ClearContents
    .Range("A4:K4").Resize(K + 2) = dArr
End With
Set Dic = Nothing
End Sub
 
Upvote 0
Ai biết đâu, thấy trống rỗng thì lấy qua làm gì, lúc đầu tôi lấy tất thì ra toàn các số 0 nhìn rối mắt nên bỏ qua.
Thay Sub cũ bằng cái này thử xem:
PHP:
Public Sub GPE()
Dim Dic As Object, sArr(), dArr(), Txt As String
Dim I As Long, J As Long, K As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 11).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 11)
K = -2
For I = 1 To UBound(sArr, 1)
    Txt = sArr(I, 1) & sArr(I, 2) & "#" & sArr(I, 3) & "#" & sArr(I, 5)
    If Not Dic.Exists(Txt) Then
        K = K + 3
        Dic.Add Txt, K
        For J = 1 To 3
            dArr(K, J) = sArr(I, J)
            dArr(K + 1, J) = sArr(I, J)
            dArr(K + 2, J) = sArr(I, J)
        Next J
    End If
        Rws = Dic.Item(Txt)
        If Abs(sArr(I, 6)) > dArr(Rws, 6) Then
            For J = 4 To 11
                dArr(Rws, J) = Abs(sArr(I, J))
            Next J
        End If
        If Abs(sArr(I, 10)) > dArr(Rws + 1, 10) Then
            For J = 4 To 11
                dArr(Rws + 1, J) = Abs(sArr(I, J))
            Next J
        End If
        If Abs(sArr(I, 11)) > dArr(Rws + 2, 11) Then
            For J = 4 To 11
                dArr(Rws + 2, J) = Abs(sArr(I, J))
            Next J
        End If
Next I
With Sheet2
    .Range("A4:K1000").ClearContents
    .Range("A4:K4").Resize(K + 2) = dArr
End With
Set Dic = Nothing
End Sub
Em đã thay Sub này nhưng code không chạy Chú ơi? Cảm ơn Chú nhiều.
 

File đính kèm

Upvote 0
Em đã thay Sub này nhưng code không chạy Chú ơi? Cảm ơn Chú nhiều.

Dữ liệu trước sau bất nhất, cột D lúc đầu là Number, sao bây giờ là Text?, Nhìn vào kiểu dữ liệu để viết, đâu phải "tính toán" cho chuỗi Text được.

Bây giờ bạn đưa file này lên, dữ liệu không hoàn toàn giống những file trước, các cột từ F đến K đếu có số âm, dương. Tất cả các cột này đều chuyển thành số dương bằng trị tuyệt đối hay sao?

Ví dụ: cột F, lấy trị tuyệt đối lớn nhất, còn các cột khác giữ nguyên số liệu ?
....................
 
Lần chỉnh sửa cuối:
Upvote 0
Dữ liệu trước sau bất nhất, cột D lúc đầu là Number, sao bây giờ là Text?, Nhìn vào kiểu dữ liệu để viết, đâu phải "tính toán" cho chuỗi Text được.

Bây giờ bạn đưa file này lên, dữ liệu không hoàn toàn giống những file trước, các cột từ F đến K đếu có số âm, dương. Tất cả các cột này đều chuyển thành số dương bằng trị tuyệt đối hay sao?

Ví dụ: cột F, lấy trị tuyệt đối lớn nhất, còn các cột khác giữ nguyên số liệu ?
....................
Dạ cháu xin lỗi do đưa dữ liệu không rõ ràng. Cột D là dữ liệu vừa text và số, giống như file đính kèm cháu đã gửi, chẳng hạn như Comb1...Dữ liệu cột F, K có số âm, số dương khi đưa qua sheet2 chuyển thành số dương bằng trị tuyệt đối. Thành thật xin lỗi chú lần nữa. Cảm ơn chú rất nhiều.
 
Upvote 0
Dạ cháu xin lỗi do đưa dữ liệu không rõ ràng. Cột D là dữ liệu vừa text và số, giống như file đính kèm cháu đã gửi, chẳng hạn như Comb1...Dữ liệu cột F, K có số âm, số dương khi đưa qua sheet2 chuyển thành số dương bằng trị tuyệt đối. Thành thật xin lỗi chú lần nữa. Cảm ơn chú rất nhiều.

Vậy thì xem lại file này, từ cột F đến K đều là ABS(số)
File trước cột D là số, bây giờ là Text nên lỗi ABS(Text).
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Vậy thì xem lại file này, từ cột F đến K đều là ABS(số)
File trước cột D là số, bây giờ là Text nên lỗi ABS(Text).
Dạ không cột D không cần ABS, chỉ đưa giá trị cột D tương ứng giá trị cột khác qua sheet2 luôn Chú ơi.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ không cột D không cần ABS, chỉ đưa giá trị cột D tương ứng giá trị cột khác qua sheet2 luôn Chú ơi.

Bạn đã xem file bài #8 chưa vậy?
Cột D bạn là Text thì làm gì ABS() được. Tôi nói là "trước đây" kìa, từ fle trước (Bài #3) bạn nhập "thí thí" cho nó là số, đến bài #5 bạn đưa file là Text nên lỗi, tôi đã chỉnh lại trong file bài #8 rồi đó. Nếu không đúng thì bạn nói rõ lại yêu cầu.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đã xem file bài #8 chưa vậy?
Cột D bạn là Text thì làm gì ABS() được. Tôi nói là "trước đây" kìa, từ fle trước (Bài #3) bạn nhập "thí thí" cho nó là số, đến bài #5 bạn đưa file là Text nên lỗi, tôi đã chỉnh lại trong file bài #8 rồi đó. Nếu không đúng thì bạn nói rõ lại yêu cầu.
Dạ ok rồi Chú, để cháu sử dụng nếu có lỗi thì cháu sẽ phiền chú. Cảm ơn Chú nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom