chuyển thành NKC

Liên hệ QC

quochung2005

Thành viên chính thức
Tham gia
16/6/06
Bài viết
89
Được thích
19
chào các bác mình muốn hỏi mình có sheet data là nhập nợ có và số tiền cùng một hàng sau đó mình muốn chuyển thành NKC một nợ nhiều có và nhiều có một nợ tùy theo từng bút toán thành NKC
vd: nợ 156:300
nợ 133: 30
có 111: 330
ghi trong sổ là TKnợ TK có Sô tiền
156 111 300
133 111 30
mình muốn convert thành NKC là
TK SỐ TIỀN
NỢ CÓ
156 300
133 30
111 330
Và sau đó lên sổ cái từng tài khoản, mình gửi file lên mong mọi anh chị giúp viết VBA hoặc dùng công thức
thân
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem file đính kèm xem có đúng ý bạn chưa nhé!
 

File đính kèm

chào các bác mình muốn hỏi mình có sheet data là nhập nợ có và số tiền cùng một hàng sau đó mình muốn chuyển thành NKC một nợ nhiều có và nhiều có một nợ tùy theo từng bút toán thành NKC
vd: nợ 156:300
nợ 133: 30
có 111: 330
ghi trong sổ là TKnợ TK có Sô tiền
156 111 300
133 111 30
mình muốn convert thành NKC là
TK SỐ TIỀN
NỢ CÓ
156 300
133 30
111 330
Và sau đó lên sổ cái từng tài khoản, mình gửi file lên mong mọi anh chị giúp viết VBA hoặc dùng công thức
thân
Bạn làm theo hướng dẫn trong file đính kèm
 

File đính kèm

Các bạn viết thành code giúp cái, thêm 1 yêu cầu là nếu số CT, ngày CT, diễn giải giống nhau thì sẽ không in dòng đó, I/O " hay là "nt"
Cám ơn các bạn nhiều.
 
Các bạn viết thành code giúp cái, thêm 1 yêu cầu là nếu số CT, ngày CT, diễn giải giống nhau thì sẽ không in dòng đó, I/O " hay là "nt"
Cám ơn các bạn nhiều.
Tớ nghiệp dư nên chỉ làm được thế này.
Nếu muốn xóa Số CT, Ngày CT, Diễn giải của những dòng giống thì bạn dùng sumproduct() rồi Sử dụng AutoFilter lọc ra rồi xóa.
Ví dụ trong file này:
Mã:
H7=SUMPRODUCT(--($A$7:A7=A7),--($B$7:B7=B7),--($C$7:C7=C7))
Rồi AutoFilter những giá trị lớn hơn 1 ở cột H, xóa Số CT, Ngày CT, Diễn giải.
Mời bạn xem file đính kèm.
P/S: Nghiệp dư nên code không được gọn gàng :-=
 

File đính kèm

Bạn làm theo hướng dẫn trong file đính kèm
Mình xin phép góp ý một chút.
Đối vối data gốc như đề bài, việc chuyển đổi (convert) rất đơn giản, chỉ có Ctrl+C và Ctrl+V, cách làm như sau:

Bước 1: Copy Vế Phát sinh Nợ:

1. Copy [Cột Số chứng từ], [Ngày], [Diễn giải], [TK Nợ] qua sheet [Convert]
2. Copy [Số tiền] vào cột [Số tiền nợ] bên sheet [Convert]
3. Copy cột [TK Có] vào cột [TK Đối ứng] bên sheet [Convert]
4. Copy cột [Mã vụ việc] vào cột [Mã vụ việc] bên sheet [Convert]
-----------------------------------------------------------------------
Bước 2: Copy vế Phát Sinh Có: (Copy nối tiếp vào sheet Convert)
1. Copy [Cột Số chứng từ], [Ngày], [Diễn giải], [TK Có] qua sheet [Convert]
2. Copy [Số tiền] vào cột [Số tiền Có] bên sheet [Convert]
3. Copy cột [TK Nợ] vào cột [TK Đối ứng] bên sheet [Convert]
4. Copy cột [Mã vụ việc] vào cột [Mã vụ việc] bên sheet [Convert]

Xong phần copy. Muốn viết code thì cũng viết trên cơ sở này.

Phần làm sổ cái thì như công thức trong file mình đính kèm bài bên dưới.

Vài dòng chia sẻ với các bạn.
 
Lâu ngày không đụng đến VBA, nay viết lại thấy thế nào.
Nhân tiện, mìng đang cần vấn đề này, làm thử 1 code, nhờ các bạn sửa hộ.
PHP:
Dim soctgoc As Range, phieuthu As Range, ngayct As Range, ngayht As Range
Dim noidung As Range, matkno As Range, matkco As Range, tienvn As Range
'soctgoc (cot 1), phieuthu (cot 2), ngayct (cot 3), ngayht (cot 4)
'noidung (cot 5), matkno (cot 6), matkco (cot 7), tienvn (cot 8)
Dim WF As WorksheetFunction
Dim data As Range
Dim iR As Long, DongDau As Long, i As Long, j As Long, SoT As Long
Dim Th_PS As Long, NgayDau As Date, NgayCuoi As Date
Dim SoTienPSTruoc As Double
Sub TaoNKC()
DongDau = 10
With Application
  .ScreenUpdating = False: .DisplayAlerts = False: .Calculation = xlCalculationManual
End With
Set WF = WorksheetFunction
Sheet1.Select
'Tim dong cuoi cua data theo cot soctgoc (1)'
With Sheet2
  iR = .Cells(65000, 1).End(xlUp).Row
  'data co 19 cot'
  Set data = .Range(.Cells(1, 1), .Cells(iR, 19))
  Set ngayht = .Range("E2:E" & iR) 'cot ngayht la cot 5 trong data'
  Set tienvn = .Range("Q2:Q" & iR) 'cot tienvn la cot 17 trong data'
End With
'Lay du lieu theo thang '
Th_PS = Range("E5") 'Gan ngay dau va ngay cuoi -> AF'
NgayDau = DateSerial(2008, Th_PS, 1)
NgayCuoi = DateSerial(2008, Th_PS + 1, 0)
'Tinh so phat sinh cac ky truoc
SoTienPSTruoc = WF.SumIf(ngayht, "<" & CLng(NgayDau), tienvn)
Set ngayht = Nothing
Set tienvn = Nothing
With Sheet5
  .Range("K2") = ">=" & NgayDau
  .Range("L2") = "<=" & NgayCuoi
End With
With Sheet5
  .Range("A2:I65000").ClearContents
  data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        .Range("K1:L2"), CopyToRange:=.Range("A1:H1"), Unique:=False
  iR = .Cells(65000, 1).End(xlUp).Row
  Set data = .Range(.Cells(2, 1), .Cells(iR, 8))
  With data 'sort lai theo ngayht, soctgoc, matkno'
    .Sort Key1:=.Range("D2"), Order1:=xlAscending, Key2:=.Range("A2") _
        , Order2:=xlAscending, Key3:=.Range("F2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
        xlSortNormal
  End With
End With
ActiveWorkbook.Names("Criteria").Delete
ActiveWorkbook.Names("Extract").Delete
Range("H9") = SoTienPSTruoc
Range("I9") = SoTienPSTruoc
Range("A" & DongDau & ":J10000").ClearContents
Range("A" & DongDau & ":J10000").Font.Bold = False
Range("A" & DongDau & ":J10000").Select
XoaKhung
'Cong doan chuyen sang NKC'
With Sheet5 'xem lai phan nay chuyen sang offset
  Set soctgoc = data.Offset(0, 0).Resize(, 1)
  Set matkno = data.Offset(0, 5).Resize(, 1)
  Set matkco = data.Offset(0, 6).Resize(, 1)
  Set tienvn = data.Offset(0, 7).Resize(, 1)
End With
i = 1
j = DongDau: sott = 0
Do While i < iR + 1
  soct = data.Cells(i, 1)
  If IsEmpty(soct) Then GoTo bien
  sott = sott + 1
  Cells(j, 2) = soctgoc(i).Offset(, 3) 'ngay ht
  Cells(j, 3) = soctgoc(i)
  Cells(j, 4) = soctgoc(i).Offset(, 2) 'ngay ct
  Cells(j, 5) = soctgoc(i).Offset(, 4) 'Dien giai
  Cells(j, 10) = soctgoc(i).Offset(, 1) 'Phieu thu, chi
  Cells(j, 1) = sott 'danh soTT'
  solan = WF.CountIf(soctgoc, soct)
  If solan = 1 Then 'voi nhung soct co 1N 1C'
    Cells(j, 8) = tienvn(i)
    Cells(j, 7) = matkno(i)
    Cells(j + 1, 7) = matkco(i)
    Cells(j + 1, 9) = tienvn(i)
    Range(Cells(j + 1, 1), Cells(j + 1, 5)).Value = "-" 'danh dau - la repeat'
    j = j + solan + 1
  Else
    sotienPS = WF.SumIf(soctgoc, soct, tienvn)
    'Phan biet 1 No many Co hay nguoc lai, phan thanh 2 truong hop'
    If matkno(i) <> matkno(i + 1) Then
      For k = 1 To solan
        Cells(j + k - 1, 7).Value = matkno(i + k - 1)
        Cells(j + k - 1, 8) = tienvn(i + k - 1)
        Range(Cells(j + k, 1), Cells(j + k, 5)).Value = "-" 'danh dau - la repeat'
      Next
      Cells(j + k - 1, 9) = sotienPS 'tienvn(i)
      Cells(j + k - 1, 7) = matkco(i)
    Else 'lam nguoc lai'
      Cells(j, 8) = sotienPS 'tienvn(i)
      Cells(j, 7) = matkno(i)
      For k = 1 To solan
        Cells(j + k, 7).Value = matkco(i + k - 1)
        Cells(j + k, 9) = tienvn(i + k - 1)
        Range(Cells(j + k, 1), Cells(j + k, 5)).Value = "-" 'danh dau - la repeat'
      Next
    End If
    j = j + k
  End If
  j = j
  i = i + solan
Loop
bien:
Range(Cells(DongDau, 6), Cells(j - 1, 6)).Value = "x"
Range(Cells(j, 8), Cells(j, 9)).FormulaR1C1 = "=SUM(R" & DongDau & "C:R[-1]C)" 'dong cong'
Range(Cells(j + 1, 8), Cells(j + 1, 9)).FormulaR1C1 = "=R[-1]C+R" & DongDau & "C" 'dong luy ke'
'Phan dinh dang rau ria
Cells(j, 5).Value = "Toång coäng"
Cells(j + 1, 5).Value = "Luyõ keá cuoái thaùng naøy"
Range(Cells(j, 5), Cells(j + 1, 9)).Font.Bold = True
Range(Cells(DongDau, 1), Cells(j + 1, 10)).Select
KeKhung
Set data = Nothing
With Application
  .ScreenUpdating = True: .DisplayAlerts = True: .Calculation = xlCalculationAutomatic
End With

End Sub
Đang lủng củng ở chỗ 1N nhiều Có và 1 Có nhiều nợ
 

File đính kèm

Mình xin phép góp ý một chút.
Đối vối data gốc như đề bài, việc chuyển đổi (convert) rất đơn giản, chỉ có Ctrl+C và Ctrl+V, cách làm như sau:

Bước 1: Copy Vế Phát sinh Nợ:

1. Copy [Cột Số chứng từ], [Ngày], [Diễn giải], [TK Nợ] qua sheet [Convert]
2. Copy [Số tiền] vào cột [Số tiền nợ] bên sheet [Convert]
3. Copy cột [TK Có] vào cột [TK Đối ứng] bên sheet [Convert]
4. Copy cột [Mã vụ việc] vào cột [Mã vụ việc] bên sheet [Convert]
-----------------------------------------------------------------------
Bước 2: Copy vế Phát Sinh Có: (Copy nối tiếp vào sheet Convert)
1. Copy [Cột Số chứng từ], [Ngày], [Diễn giải], [TK Có] qua sheet [Convert]
2. Copy [Số tiền] vào cột [Số tiền Có] bên sheet [Convert]
3. Copy cột [TK Nợ] vào cột [TK Đối ứng] bên sheet [Convert]
4. Copy cột [Mã vụ việc] vào cột [Mã vụ việc] bên sheet [Convert]

Xong phần copy. Muốn viết code thì cũng viết trên cơ sở này.

Phần làm sổ cái thì như công thức trong file mình đính kèm bài bên dưới.

Vài dòng chia sẻ với các bạn.
Bạn làm như thế này thì đâu phải là "Một nơ - Nhiều có" hay "Nhiều nợ - Một có nữa" mà cái nào cũng là "Một nợ - Một có". Cách copy này không gom được những dòng giống nhau hết chỉ khác cột số tiền. Vì khi định khoản cùng dòng ta đã tách số tiền ra theo đúng số tiền của TK đối ứng. Bây giờ trình bày khác thì cũng nên gom lại, tránh để người khác tưởng lầm là nhiều bút toán.
 
Bạn làm như thế này thì đâu phải là "Một nơ - Nhiều có" hay "Nhiều nợ - Một có nữa" mà cái nào cũng là "Một nợ - Một có". Cách copy này không gom được những dòng giống nhau hết chỉ khác cột số tiền. Vì khi định khoản cùng dòng ta đã tách số tiền ra theo đúng số tiền của TK đối ứng. Bây giờ trình bày khác thì cũng nên gom lại, tránh để người khác tưởng lầm là nhiều bút toán.

Vấn đề này đâu có khó đâu bạn, Sau khi copy xong ta sort lại theo số chứng từ và ngày chứng từ và diễn giải là xong thôi!
 
anh ca_dafi có thể làm 1 file cho mọi người tham khảo được không?
thân
 
Web KT

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

Back
Top Bottom