Thất vọng wa...đành phải làm gián tiếp "ăn gian" rồi!
Công thức cho ý 3 quá hay... còn công thức ý 1+2 thì khi giá trị Nợ Có lặp lại nhiều lần thì hàm VLOOKUP tìm chính xác 1 giá trị duy nhất nên khi các giá tri Nợ Có phát sinh sau lặp lại thì không lấy đúng giá trị của nó...Mong bác giúp e...thank bác nhiều!Bạn thử dùng file này xem có được không nhé.
Thử với cái nút bấm và hàm tự tạo xem có nhanh gọn hơn được chút nào không nhé.Công thức cho ý 3 quá hay... còn công thức ý 1+2 thì khi giá trị Nợ Có lặp lại nhiều lần thì hàm VLOOKUP tìm chính xác 1 giá trị duy nhất nên khi các giá tri Nợ Có phát sinh sau lặp lại thì không lấy đúng giá trị của nó...Mong bác giúp e...thank bác nhiều!
Public Sub GPE1()
Dim Rng(), Arr(), I As Long, K As Long, N As Long
Rng = Sheet1.Range(Sheet1.[A2], Sheet1.[A65000].End(xlUp)).Resize(, 3).Value
N = UBound(Rng, 1)
ReDim Arr(1 To N * 2, 1 To 3)
For I = 1 To N
K = K + 1
Arr(K, 1) = Rng(I, 1): Arr(K, 2) = Rng(I, 3)
K = K + 1
Arr(K, 1) = Rng(I, 2): Arr(K, 3) = Rng(I, 3)
Next
Sheet1.[F3:H1000].ClearContents
If K Then Sheet1.[F3].Resize(K, 3).Value = Arr
End Sub
Public Function GPE2(Rng As Range) As String
Dim Cll As Range, Tem As String
Tem = "So HD kem theo:"
For Each Cll In Rng
If Cll.Value <> Cll.Offset(-1).Value Then Tem = Tem & " " & Cll.Value & ";"
Next
GPE2 = Left(Tem, Len(Tem) - 1)
End Function
Vậy bạn xem thử cách này xem có khả thi hơn không, làm cho ý 1+2???Công thức cho ý 3 quá hay... còn công thức ý 1+2 thì khi giá trị Nợ Có lặp lại nhiều lần thì hàm VLOOKUP tìm chính xác 1 giá trị duy nhất nên khi các giá tri Nợ Có phát sinh sau lặp lại thì không lấy đúng giá trị của nó...Mong bác giúp e...thank bác nhiều!
Vậy bạn xem thử cách này xem có khả thi hơn không, làm cho ý 1+2???
@mhung12005 : Công thức ý 3 của mhung sẽ bị phá sản nếu có 100 số hóa đơn, công thức mảng liệu chạy nổi không chứ chưa nói gì đến thay 100 lần thành phần của công thức. Hơn nữa đây là chúng ta đã biết là có 3 giá trị duy nhất nên mới đặt công thức như vậy được, trong trường hợp chưa biết thì sẽ thế nào nhỉ ??? Túm lại là chưa tổng quát ạ!!!



Với yêu cầu 1, đúng theo Barem dữ liệu của bạn thì công thức tại D3:Tác giả muốn dùng công thức để nhập từ hóa đơn vào nhật ký chung, sổ cái?
Ý 3 có thể sử dụng trong 1 số báo cáo nội bộ thôi, nhưng để lập công thức thì hơi phức tạp, mình thấy nên dùng công thức ngay tại phần nhập Số hóa đơn. Nếu cột Số hóa đơn được lấy giá trị từ phần kê danh sách hóa đơn thì dùng công thức để các số hóa đơn giống nhau chỉ nhập 1 lần. Sau đó ở ô Số hóa đơn kèm theo, dùng công thức lấy giá trị từ cột Số hóa đơn, và bỏ các ô trống. (không biết cách này có nhanh và đơn giản hơn không. Mình nghĩ vậy thôi, mong các bạn chỉ giáo thêm.)
Còn nếu Số hóa đơn phải nhập = tay thì chỉ nên nhập 1 lần rồi dùng cách nối giá trị nhiều cell vào 1 cell. (có vẻ việc nhập = tay ko xảy ra vì tác giả muốn hoàn thiện phần mềm, mà đã là phần mềm thì chỗ này phải dùng hàm)
Bác HMTC làm rất hay. bác có thể giúp em lập công thức theo cách e ko? (có ví dụ đi kèm) để mở rộng tầm mắt và học hỏi thêm.
p/s; Cách sử dụng VBE rất hay. Cho mình hỏi mua sách dạy VBE ở Hn ở đâu không ạ?
Chân thành cảm ơn mọi sự góp ý và giúp đỡ!
=IF(COUNTIF($B$3:$B3,B3)=1,B3,"")
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX($B$3:$B$10,MATCH(TRUE,INDEX(ISNA(MATCH($B$3:$B$10,$D$15:D15,0)),0),0))))
Vậy bạn xem thử cách này xem có khả thi hơn không, làm cho ý 1+2???
dhthanh8x : Hình như ý 3 bạn đang tự làm khó mình, mục đích cuối cùng cũng chỉ cần tìm mã hóa đơn duy nhất xuất hiện thôi mà??? Đơn giản vấn đề một chút đi bạn...
=======================
Còn nếu bạn áp dụng code của bác BaTe cho yêu cần 3 thì cần chú ý nếu phía trên vùng dữ liệu cần liệt kê phải có ít nhất 1 dòng trống nếu không Function sẽ báo lỗi Value (ví dụ dữ liệu nằm từ A1:A..., thì code sẽ lỗi), thêm nữa code không phải dạng lọc duy nhất rồi liệt kê nên số hóa đơn phải được Sort lại trước khi dùng User Function GPE2() trên nếu không kết quả trả về sẽ bị trùng.
Thực ra sử dụng thế nào cho linh hoạt để phục vụ cho bạn là tùy ở bạn thôi, vì mọi người không thấy file thật của bạn nên chỉ tư vấn theo file mấu bạn đưa lên thôi.@Hoamattroicoi: Công thức ý 1+2 mình đã hoàn chỉnh theo ý bác (rất hay)...còn ý 3 thì khi in phiếu thì đánh số phiếu (Phiếu thu "PTxxxx" or Phiếu Nhập kho hàng hóa (thành phẩm or vật liệu) "NKHHxxx" or "NKTP" or "NKVLxxxx" thì sẽ đi kèm với nhiều số hóa đơn....nên viết công thức thì ko được lập lại.
@Bate: khi in phiếu thu chi - nhập xuất kho thi lại bất tiện, trên sổ nhật ký chung phần "nội dung diễn giải thì sẽ lấy 2 nội dung độc lập nên rất khó áp dụng linh động khi dùng macro
Rất cảm ơn các bác chỉ giáo nhiệt tình....e đây chỉ còn mỗi macro tính giá xuất kho theo 4 phương pháp...không biết bác nào là cao thủ chuyên gia...hichic...minh rất muốn hoàn thiện PM cho mọi người dùng nhưng vẫn phải "tôn trọng" các pro VBA nên rất khó mở lời xin giúp đỡ (đã tìm qua ra các đoạn mã tính 4 pp nhưng các đoạn mã này "bị động"....)




Uk...mình cũng đang soạn mẫu dễ hiểu để mọi người có thể hiểu viết như thế nào cho đơn giảnThực ra sử dụng thế nào cho linh hoạt để phục vụ cho bạn là tùy ở bạn thôi, vì mọi người không thấy file thật của bạn nên chỉ tư vấn theo file mấu bạn đưa lên thôi.
Phần macro tính giá xuất kho theo 4 phương pháp, nếu là người từng học kế toán thì mới hiểu cách tính 4 phương pháp này thế nào, nếu tính toán thông thường thì có lẽ không ai học kế toán mà không biết đến nó tuy nhiên dân kế toán không phải ai cũng giỏi lập trình để mã hóa 4 phương pháp đó thành code. Người giỏi lập trình thì lại không hiểu gì về 4 phương pháp ấy để giúp bạn và quan trọng hơn là cách bố trí dữ liệu trong file của bạn thế nào nữa?
Bạn có thể tách 4 phương pháp ấy ra, từng bước, từng bước mô tả để tất cả mọi người dù không học kế toán (nhưng biết lập trình) vẫn hiểu được bạn đang muốn làm gì mà chẳng cần hiểu LiFo, FiFo... là cái gì thì chắc chắn sẽ có nhiều người giúp bạn hơn bạn ạ!
Đôi lời chia sẻ...