Hướng dẫn em cách điều chỉnh hàm liệt kê tài khoản đối ứng (Visual basic) (1 người xem)

Liên hệ QC

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

bboy_pro

Thành viên mới
Tham gia
21/8/11
Bài viết
10
Được thích
0
Em có 1 file dữ liệu, gồm rất nhiều mã chứng từ, mỗi mã chứng từ có rất nhiều giao dịch (thu, hoặc chi, nhưng tổng bằng 0), mỗi giao dịch đc ghi vào 1 tài khoản (mỗi tài khoản có thể đc lặp lại nhiều lần). 1 anh trên diễn đàn (anh Ba Tê) đã giúp em viết 1 hàm trong visual basic để liệt kê các tài khoản đối ứng, hàm dùng rất tốt nhưng nếu có tài khoản nào lặp lại, hàm sẽ điền tài khoản đó bấy nhiêu lần vào cột tài khoản đối ứng. Em mong các anh chị nào rành về visual giúp em điều chỉnh để khắc phục vấn đề này. Em cám ơn nhiều ạ. Các anh chị có thể xem file đính kèm để hiểu rõ hơn.
 

File đính kèm

Bạn sửa 1 chút thôi mà (Thêm doạn in đậm màu đỏ ấy):

Mã:
Public Function TKDU(Rng As Range, MaCT As Range, TK As Range) As String
Dim Rng1(), I As Long, Tem As String
    Rng1 = Rng.Value
    For I = 1 To UBound(Rng1, 1)
        If Rng(I, 1) = MaCT Then
            If Rng(I, 4) <> TK [B][COLOR=#ff0000]And InStr(1, Tem, Rng(I, 4), 0) = 0[/COLOR][/B] Then
                Tem = Tem & ", " & Rng(I, 4)
            End If
        End If
    Next I
TKDU = Mid(Tem, 3, Len(Tem) - 2)
End Function
 
Em có 1 file dữ liệu, gồm rất nhiều mã chứng từ, mỗi mã chứng từ có rất nhiều giao dịch (thu, hoặc chi, nhưng tổng bằng 0), mỗi giao dịch đc ghi vào 1 tài khoản (mỗi tài khoản có thể đc lặp lại nhiều lần). 1 anh trên diễn đàn (anh Ba Tê) đã giúp em viết 1 hàm trong visual basic để liệt kê các tài khoản đối ứng, hàm dùng rất tốt nhưng nếu có tài khoản nào lặp lại, hàm sẽ điền tài khoản đó bấy nhiêu lần vào cột tài khoản đối ứng. Em mong các anh chị nào rành về visual giúp em điều chỉnh để khắc phục vấn đề này. Em cám ơn nhiều ạ. Các anh chị có thể xem file đính kèm để hiểu rõ hơn.
Sửa UDF 1 chút là OK
PHP:
Public Function TKDU(Rng As Range, MaCT As Range, TK As Range) As String
Dim Rng1(), I As Long, Tem As String
    Rng1 = Rng.Value
    For I = 1 To UBound(Rng1, 1)
        If Rng(I, 1) = MaCT Then
            If Rng(I, 4) <> TK Then
              If Len(Tem) = 0 Then
                Tem = Rng(I, 4)
              Else
                If InStr(Tem, Rng(I, 4)) = 0 Then
                  Tem = Tem & ", " & Rng(I, 4)
                End If
              End If
            End If
        End If
    Next I
TKDU = Tem
'TKDU = Mid(Tem, 3, Len(Tem) - 2)'
End Function
 
thanks mọi ng nhiều hen, đơn giản với mọi ng chứ với em là cả vấn đề, em mù visual basic muh :) sẵn cho em hỏi là học visual basic thì có khó lắm ko? học tốn khoảng bao tiền? em học bằng B tin mà thấy chả thấm vào đâu, chỉ đủ làm những hàm đơn giản. học visual có thể tự viết hàm theo ý mình nên em thấy rất có ích cho công việc.
 
Có nhiều con đường đưa ta tới đích, có con đường lớn thênh thang nhưng phải mua vé, có đường hàng không cực nhanh hiện đại nhưng vé đắt hơn. Có những con đường mòn vừa đi vừa hỏi cũng đến nơi sau những nhọc nhằn. Quan trọng nhất là quyết tâm đi và khả năng đến đâu mà thôi.
Vậy nếu có thể bạn nên đến trường lớp học hành chu đáo đảm bảo kiến thức học được có hệ thống, là nền móng phát triển kiến thức lâu dài. Còn chí ít thì ta cũng có thể học tại GPE, tốt hơn nữa thì học tại các lớp do các anh có nội công thâm hậu dạy bảo như Hà Nội, Sài Gòn đã có. Nhiều anh em cũng lớn lên từ đây.
Có lẽ chỉ có bạn chọn cho bạn là sáng suốt nhất.
 
Chào các anh các chị...
Em cũng gặp phải y/c trong công việc như bạn trên, em đã đọc và làm như trong bài nhưng thấy ko khả thi có lẽ bởi vì form của sổ cái của em trình bày khác bạn nên ko biết sử dụng hàm TKDU như thế nào cho phải đạo...
Em đính kèm file (Sheet SOCAI (2)) các anh chèn giúp em luôn cho an toàn nhé.
Cảm ơn các anh chị và rất mong được giúp đỡ sớm..
 

File đính kèm

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

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

Back
Top Bottom