Giải pháp tự đánh số có điều kiện!

Liên hệ QC

tnfsmith

Thành viên hoạt động
Tham gia
26/3/07
Bài viết
151
Được thích
0
Giới tính
Nam
Chào các bác, hiện tại em có file Excel cần các bác giúp đở cách đánh số tự động với các điều kiện kèm theo file đính kèm. Các bác có thể tải file về máy và nghiên cứu tiếp em nhé. Cám ơn các bác nhiều!! //**/ //**/
 

File đính kèm

  • GNN.xls
    24.5 KB · Đọc: 82
Hình như ý bạn muốn là khi cột SỐ TIỀN TRẢ có dử liệu thì sẽ đánh số TT vào cột GHI CHÚ, đúng ko?
Nếu thế thì dùng công thức sau:
I6 =IF(G6="","",MAX($I$5:I5)+1)
Ko biết đúng ý ko nữa
ANH TUẤN
 
Hình như ý bạn muốn là khi cột SỐ TIỀN TRẢ có d liệu thì sẽ đánh số TT vào cột GHI CHÚ, đúng ko? Nếu thế thì dùng công thức sau:
I6 =IF(G6="","",MAX($I$5:I5)+1) Ko biết đúng ý ko nữa
/(hông rồi Tuấn ơi! Công thức thí làm sau hiển thị việc 1 lần trà cho 2 lần vay nợ trở lên được!?! (dòng cuối trong VD í!)

Mình nghỉ bài này không 'Đang Zỡn' được!+-+-+-+ :=\+
 
Tôi cứ nghĩ mỗi lần trả nợ thì đánh dấu vào.. Trả nợ thì cứ trả nợ thôi, ko cần biết lúc trước ta nợ bao nhiêu và cũng ko quan trọng là ta đang trả nợ cho món nợ nào... cứ trả nợ, rồi trừ vào tổng số tiền nợ... còn bao nhiêu thì lần sau trả tiếp...
Nhưng mà... nếu như tôi suy luận ko đúng thì có ai biết dc ý bạn ấy muốn thế nào ko? "Diển nôm" giùm cái đi
ANH TUẤN
 
Cũng ko hiểu luôn... GIẤY NHẬN NỢ gì gì đó nó nằm ở cột nào trong file? . . .nhìn vào thấy tê quá!
/)/(ình sẽ phiên dịch tiếng nào ra tiếng í, như sau

Đây là dữ liệu của 1 sheet theo dõi quan hệ nơ nần;
1'. /(ẻ đi vay có thể vay nhiều lần mà chưa cần trả (VD chưa đến hạn hay chưa vượt số tiền mà người cho vay giao kèo. . .)
Bạn sẽ thấy 3 dòng đầu đều là vay;
2'. Người vay cũng có thể trà một ít tiền trong lần vay đầu, lúc đó ta sẽ ghi vô dòng tw ứng của cột '$I' số 1 (Tiền này trả cho lần vay đầu)
2.1'. Ngẫu hứng người này có thể thay vì đem 1,2 tỉ đi trả (ngày 10/04/07) mà có thể đem 2,15 tỉ đi trả; Khi đó ta phải ghi vô dòng tw ứng của cột '$I' nêu trên kí hiệu: 1, 2 (vì trả cho lần vay đầu 2,0 tỉ & 0,15 tỉ cho lần vay thứ 2);
2.3'. Dư nợ 2 lần vay đầu (trong 3 lần vay) là 2,2 tỉ; Người đó đem >2,2 tỉ trả vô ngày 10 nêu trên, thì chw trình phải ghi là 1, 2, 3 tại '$I$9'
/)/ếu còn chưa rõ nữa thì cafê, hay dùng ngôn ngữ 10 ngón, nha!
 
Lần chỉnh sửa cuối:
uh đúng như bạn SA_DQ nói đó, cách đánh số này mình tìm mãi không ra. Chẳng biết có cách nào giải quyết triệt để hơn không. Nếu như anhtuan1066 nói dùng hàm I6 =IF(G6="","",MAX($I$5:I5)+1) thì không có chuẩn chung hết các GNN được vì ngẫu nhiên có thể ông A này trả một lần cho 2 hay 3 GNN thì sao. Các bác nghiên cứu có thể dùng Macro hay sao ấy, em potay nó roài, nghiên cứu mãi mà vẫn không thành công nên đành post lên cho các bác tiếp tay ấy.

Cám ơn các bác đã có ý kiến đóng góp nhé, thanks anhtuan1066SA_DQ. Mong SA_DQ bạn có thể tìm ra giải pháp cho bài toán này vì mình thấy bạn phân tích bài toán này như người từng trãi ấy!
 
tnfsmith đã viết:
Chào các bác, hiện tại em có file Excel cần các bác giúp đở cách đánh số tự động với các điều kiện kèm theo file đính kèm. Các bác có thể tải file về máy và nghiên cứu tiếp em nhé. Cám ơn các bác nhiều!! //**/ //**/

Cái này giống phương pháp tính hàng tồn kho FiFo của Kế toán đây mà.
Có được dùng cột phụ không bạn ???

Thân!
 
Mr Okebab đã viết:
Cái này giống phương pháp tính hàng tồn kho FiFo của Kế toán đây mà. Có được dùng cột phụ không bạn ???!
Trong khi chờ đợi Bắp ta giúp bạn, tôi mới làm được các phw án của lần trả đầu tiên; cũng xin đưa lên đây, nhằm cho bạn tham khảo đỡ buồn
Mã:
Option Explicit[b]

Sub GhiNhanNo()[/b]  
 Dim GCuoi As Long, iJ As Integer
  Dim PhieuCuoi, PhieuDau, SoVay As Double, SoTra As Double
  Dim Rng As Range
  Dim StrC As String
  
 Sheets("S1").Select:            GCuoi = Range("I65432").End(xlUp).Row
 If GCuoi = 3 Then  'Ghi Lan Dau
    Set Rng = Range("G4:G5").End(xlDown):               SoTra = Rng
    If Rng.Row > 65432 Then
        Exit Sub
    Else
        PhieuCuoi = Rng.Offset(-1, -5)
    End If
    For iJ = 1 To PhieuCuoi
        StrC = StrC & ", " & CStr(iJ)
        If SoTra <= Range("H" & 5 + iJ) Then Exit For
    Next iJ
    Rng.Offset(, 2) = Mid$(StrC, 3)
 Else
    Range("I" & GCuoi).Select
    With Selection
        SoTra = .Offset(1, -2)
        
        PhieuDau = Right(Range("I" & GCuoi), 1)
   [COLOR="Blue"]   ' (òn tiếp, . .  .[/COLOR]     
   MsgBox SoTra, , PhieuDau
    
    End With   
        
 End If[b]
 
End Sub[/b]
 
Lần chỉnh sửa cuối:
Bạn thử cái này code này xem.

Mã:
[SIZE=3][FONT=Times New Roman]Sub FIFORep()[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]LRow = Range("G" & Cells.Rows.Count).End(xlUp).Row[/FONT][/SIZE]
[FONT=Times New Roman][SIZE=3]Rrow = Range("G5").End(xlDown).Row[/SIZE][/FONT]
[SIZE=3][FONT=Times New Roman]Range("I6:I" & LRow).ClearContents[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Range("D5").End(xlDown).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Tieptuc:[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]loan = ActiveCell - Cells(Rrow, 7)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Cells(Rrow, 9) = ActiveCell(1, -1)[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]Select Case loan[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Case Is > 0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Check:[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Rrow = Cells(Rrow, 7).End(xlDown).Row[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]loan = loan - Cells(Rrow, 7)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Cells(Rrow, 9) = ActiveCell(1, -1)[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]Case Is = 0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]ActiveCell.End(xlDown).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Rrow = Cells(Rrow, 7).End(xlDown).Row[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]GoTo Tieptuc[/FONT][/SIZE]
 
[SIZE=3][FONT=Times New Roman]Case Is < 0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]LanNua:[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]ActiveCell(2, 1).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]While IsEmpty(ActiveCell)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]ActiveCell(2, 1).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Wend[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]loan = Abs(loan) - ActiveCell[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Cells(Rrow, 9) = Cells(Rrow, 9) & ", " & ActiveCell(1, -1)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]If loan > 0 Then GoTo LanNua[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]End Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]ActiveCell(2, 1).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]While IsEmpty(ActiveCell)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]ActiveCell(2, 1).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Wend[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Rrow = Cells(Rrow, 7).End(xlDown).Row[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]If ActiveCell.Row < LRow Then GoTo Tieptuc[/FONT][/SIZE]
[FONT=Times New Roman][SIZE=3]End Sub[/SIZE][/FONT]
 
Đúng như ông Bắp nói rồi, thực tế áp dụng rất nhiều, đó chính là công nợ nói chung. Ở đây, tiền nợ sẽ được phân bổ dần theo từng hóa đơn (từng số phiếu, từng giấy nhận nợ, từng phiếu giao hàng...) theo thứ tự là ngày và số phiếu. Việc này sẽ giúp cho việc kiểm tra được dễ dàng hơn, tránh được nhầm lẫn và giảm bớt quản lý giấy tờ. Cái này gọi là, cái cũ thì phải xử trước trái ngược với chúng ta..hì hì... Các phần mềm lớn đều có sẵn tính năng này...
 
Ok cám ơn SA_DQ agian nhé, mình sẽ thử nghiệm công thức của bạn trước khi có phản hồi chính xác. Có thể có cách giải quyết toàn vẹn hơn không. Cách tính của kế toán FiFo là gì vậy nhỉ?
 
tnfsmith đã viết:
Ok cám ơn SA_DQ agian nhé, mình sẽ thử nghiệm công thức của bạn trước khi có phản hồi chính xác. Có thể có cách giải quyết toàn vẹn hơn không. Cách tính của kế toán FiFo là gì vậy nhỉ?

FIFO = Fist In Fist Out
  1. Kế toán : Nhập trước xuất trước
  2. TH của bạn : Vay trước trả trước.
Có được dùng cột phụ không bạn ???
 
Mình cũng sử dụng cột phụ làm xong rồi, tuy nhiên nếu dùng cột phụ thì số giấy nhận nợ tối đa một sheet là 255 số hơn nữa file nặng, mình nghĩ cách tốt nhất là nên dùng VBA
 
vietanhu đã viết:
Mình cũng sử dụng cột phụ làm xong rồi, tuy nhiên nếu dùng cột phụ thì số giấy nhận nợ tối đa một sheet là 255 số hơn nữa file nặng, mình nghĩ cách tốt nhất là nên dùng VBA

Thì dĩ nhiên là VBA rồi. Nhưng có cột phụ thì dễ làm hơn thôi.
Còn giấy nhận nợ thì nên làm 1 DATA cho nó, khi nào cần thì xuất ra 1 mẫu duy nhất (như in phiếu THU - CHI vậy)

Thân!
 
Mr Okebab đã viết:
FIFO = Fist In Fist Out
  1. Kế toán : Nhập trước xuất trước
  2. TH của bạn : Vay trước trả trước.
Có được dùng cột phụ không bạn ???

Tat nhien la dc roi, mien sao ra ket qua la ok ah. Ma sao code minh dua vao Excel no khong chay nhi ? Bao loi the nao ay, co ai biet cach chen VBA vao trong Excel trong truong hop nay giup minh luon nhe. May ngay nay busy qua nen chua co lam gi het, hix gio nay con len mang thi may bac bit roi do.

Sorry vi tieng viet khong dau
 
tnfsmith đã viết:
Tat nhien la dc roi, mien sao ra ket qua la ok ah. Ma sao code minh dua vao Excel no khong chay nhi ? Bao loi the nao ay, co ai biet cach chen VBA vao trong Excel trong truong hop nay giup minh luon nhe. May ngay nay busy qua nen chua co lam gi het, hix gio nay con len mang thi may bac bit roi do.

Sorry vi tieng viet khong dau

Bạn down cái file này nhé.
 

File đính kèm

  • Ghi chu.xls
    32 KB · Đọc: 29
Web KT
Back
Top Bottom