In kết quả ra cột khác khi so sánh giá trị với các cột (1 người xem)

Liên hệ QC

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

giallorossi

Thành viên mới
Tham gia
30/6/12
Bài viết
6
Được thích
5
Hi các bác, /-*+/
Em có 1 file excel mà lăn tăn quá ko biết làm như nào, bác nào cao thủ VB excel giúp em phát
Em cần so sánh dữ liệu như thế này
Nếu cột B money > 0 và < 500 và cột C card >0 và <5 thì in copy 3 cột đó sang bên cạnh(Number, money, card)
Nếu cột B money > 500 và cột C card > 5 thi in copy 3 cột đó sang 1 bên khác (nhưng ko lẫn với 3 cột được chuyển ở trên )
Ko biết diễn đạt như thế đã dễ hiểu chưa **~** bác nào cao thủ giúp em với ạ xin cảm ơn và đa tạ
 

File đính kèm

Tôi có các thắc mắc sau:

1) Có phải bạn dùng từ "IN" là có nghĩa là "PASTE" chứ không phải là "PRINT" phải không?

2) Bạn diễn giải tôi rất khó hiểu (không biết có ai hiểu không), cho nên bạn gửi lại cái file và "vẽ" ra cái kết quả mong đợi của bạn là gì thì có thể tôi hoặc mọi người dễ dàng nắm bắt và có hướng giúp cho bạn.
 
Upvote 0
Tôi có các thắc mắc sau:

1) Có phải bạn dùng từ "IN" là có nghĩa là "PASTE" chứ không phải là "PRINT" phải không?

2) Bạn diễn giải tôi rất khó hiểu (không biết có ai hiểu không), cho nên bạn gửi lại cái file và "vẽ" ra cái kết quả mong đợi của bạn là gì thì có thể tôi hoặc mọi người dễ dàng nắm bắt và có hướng giúp cho bạn.

Uhm sorry bác í em đúng là paste đó ạ -\\/.

Uhm e attach lại kết quả mong muốn --=0 cảm ơn bác đã đọc bài của em bác xem có cách nào giúp e ko với ạ
Đa tạ bác Nghĩa }}}}}
 

File đính kèm

Upvote 0
Uhm sorry bác í em đúng là paste đó ạ -\\/.

Uhm e attach lại kết quả mong muốn --=0 cảm ơn bác đã đọc bài của em bác xem có cách nào giúp e ko với ạ
Đa tạ bác Nghĩa }}}}}

Còn thắc mắc, bạn đưa điều kiện thế này:

Dieu kien 1(0<money<500) va (0<card<5)

Nhưng kết quả bạn mong muốn lại có 2 dòng:

money: 200 và 300

card: 2 và 8

Trong khi điều kiện của bạn là nhỏ hơn 5 đối với card?

Còn nữa, nếu giá trị money = 500 và card = 5 thì nó thuộc bảng nào? Lẽ ra có 1 điều kiện phải lớn hơn, điều kiện kia phải lớn hơn hoặc bằng chứ?

Bạn kiểm tra lại chính xác các điều kiện ràng buộc đi, để tôi dễ dàng thực hiện cho bạn.
 
Upvote 0
Thôi, để tránh mất thời gian, tôi làm y như kết quả của bạn:

Mã:
Private Sub CommandButton1_Click()

    Dim r As Long, c As Long, u As Long, l As Long, n As Long, m As Long
    Dim sArray As Variant, sArr1 As Variant, sArr2 As Variant
    Dim Money As Double, Card As Double
    sArray = Range("A2", Range("A65536").End(xlUp)).Resize(, 3)
    l = LBound(sArray): u = UBound(sArray)
    ReDim sArr1(1 To u, 1 To 3), sArr2(1 To u, 1 To 3)
    
    For r = l To u
        Money = sArray(r, 2): Card = sArray(r, 3)
        If Money > 0 And Card > 0 Then
[COLOR=#ff0000]''Neu co su can thiep cua Card thi dung phan nay và không dùng phan duoi:[/COLOR][COLOR=#008000]
''-----------------------------------------------------------------------
''            If Money < 500 And Card < 5 Then
''                n = n + 1
''                For c = 1 To 3
''                    sArr1(n, c) = sArray(r, c)
''                Next
''            ElseIf Money >= 500 And Card >= 5 Then
''                m = m + 1
''                For c = 1 To 3
''                    sArr2(m, c) = sArray(r, c)
''                Next
''            End If
''-----------------------------------------------------------------------[/COLOR]
            If Money < 500 Then
                n = n + 1
                For c = 1 To 3
                    sArr1(n, c) = sArray(r, c)
                Next
            Else
                m = m + 1
                For c = 1 To 3
                    sArr2(m, c) = sArray(r, c)
                Next
            End If
[COLOR=#008000]''-----------------------------------------------------------------------[/COLOR]
        End If
    Next
    
    Range("E2:K65536").ClearContents
    If n Then Range("E2").Resize(n, 3) = sArr1
    If m Then Range("I2").Resize(m, 3) = sArr2
    
End Sub

Vậy đi, nếu chưa đúng thì làm tiếp!
 

File đính kèm

Upvote 0
Hi các bác, /-*+/
Em có 1 file excel mà lăn tăn quá ko biết làm như nào, bác nào cao thủ VB excel giúp em phát
Em cần so sánh dữ liệu như thế này
Nếu cột B money > 0 và < 500 và cột C card >0 và <5 thì in copy 3 cột đó sang bên cạnh(Number, money, card)
Nếu cột B money > 500 và cột C card > 5 thi in copy 3 cột đó sang 1 bên khác (nhưng ko lẫn với 3 cột được chuyển ở trên )
Ko biết diễn đạt như thế đã dễ hiểu chưa **~** bác nào cao thủ giúp em với ạ xin cảm ơn và đa tạ
Cứ theo những gì bạn mô tả trong bài này thì code của tôi như sau: (làm từ hồi trưa mà bây chừ mới gửi lên được đây)
[GPECODE=vb]Sub CopyData()
Dim Temp, Arr1(), Arr2(), i As Long, j As Long, k As Long, n As Long, Tmp1, Tmp2
Temp = Sheet1.[A1:C1000]
ReDim Arr1(1 To UBound(Temp), 1 To 3): ReDim Arr2(1 To UBound(Temp), 1 To 3)
For j = 1 To 3
Arr1(1, j) = Temp(1, j): Arr2(1, j) = Temp(1, j)
Next
k = 1: n = 1
For i = 2 To UBound(Temp)
If Len(Temp(i, 1)) Then
Tmp1 = Temp(i, 2): Tmp2 = Temp(i, 3)
If Tmp1 > 0 And Tmp1 < 500 And Tmp2 > 0 And Tmp2 < 5 Then
k = k + 1
Arr1(k, 1) = k - 1: Arr1(k, 2) = Temp(i, 2): Arr1(k, 3) = Temp(i, 3)
ElseIf Tmp1 > 500 And Tmp2 > 5 Then
n = n + 1
Arr2(n, 1) = n - 1: Arr2(n, 2) = Temp(i, 2): Arr2(n, 3) = Temp(i, 3)
End If
End If
Next
[E:K].Clear: [E1].Resize(k, 3) = Arr1: [I1].Resize(n, 3) = Arr2
End Sub[/GPECODE]
 

File đính kèm

Upvote 0
Bài này tôi thấy làm bằng Advanced Filter là ngon lành nhất: Tốc độ cao mà lại dễ hiểu nữa
(Đâu phải thứ gì cũng mảng mới được)
 
Upvote 0
Bài này tôi thấy làm bằng Advanced Filter là ngon lành nhất: Tốc độ cao mà lại dễ hiểu nữa
(Đâu phải thứ gì cũng mảng mới được)
Em cũng biết Advanced Filter giải quyết được vụ này, nhưng mà em đang thực hành về mảng (bữa nay đang học mà) nên nhìn vào bài toán nào cũng nghĩ đến việc dùng mảng hoặc Dic xem nó ra sao. Cứ viết bài lên, bị "chỉnh", bị "chửi" vài lần cũng ngộ ra được nhiều thứ hay lắm chứ anh.
 
Upvote 0
Ôi xin đa tạ cả 3 bác Nghĩa( đúng là ví dụ e quên ko bỏ cái number 3 có 8 card hehe sorry bác), Phúc và 1 bác tên loằng ngoằng (gợi ý advance filter ạ )
Xin chân thành cảm ơn các bác 1 lần nữa ạ :) toàn thấy núi thái sơn thế này :)
 
Upvote 0
Ôi xin đa tạ cả 3 bác Nghĩa( đúng là ví dụ e quên ko bỏ cái number 3 có 8 card hehe sorry bác), Phúc và 1 bác tên loằng ngoằng (gợi ý advance filter ạ )
Xin chân thành cảm ơn các bác 1 lần nữa ạ :) toàn thấy núi thái sơn thế này :)
Cái bác "tên loằng ngoằng" ấy mới thực sự là đại cao thủ đấy bạn, cỡ như tôi chỉ là xách dép chạy theo thôi.
Bạn thử sử dụng Advanced Filter xem bài này có dễ hơn không. Mỗi công cụ đều có cái hay của nó. Nếu giả sử bảng dữ liệu gốc của bạn có khá nhiều cột, còn bảng kết quả của bạn chỉ có một số trong các cột ấy nhưng thứ tự các cột lại bị đảo lộn so với bảng gốc thì Advanced Filter đúng là "chuyên gia" trong lĩnh vực này đấy.
 
Upvote 0
Dạ vâng đa tạ các bác đã chỉ giáo :) chúc các bác 1 ngày tốt lành
p/s: bác tên loằng ngoằng vì em k bt xưng hô thế nào chứ ko có ý gì đâu ạ --=0
 
Upvote 0
Dạ vâng đa tạ các bác đã chỉ giáo :) chúc các bác 1 ngày tốt lành
p/s: bác tên loằng ngoằng vì em k bt xưng hô thế nào chứ ko có ý gì đâu ạ --=0

Cứ gọi là "hotboy" hay "anh đẹp trai" hoặc Thầy Anh Tuấn đều được! --=0

(Tôi phải gọi người đó là Thầy, còn bạn muốn gọi như thế nào là tùy bạn ;;;;;;;;;;;)
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom