Chuyển CV cuối kỳ lên đầu kỳ như thế nào?

  • Thread starter heroic
  • Ngày gửi
H

heroic

Sơ cấp
11/11/04
56
0
0
vn
#1
Nghiệp vụ này chúng ta rất hay phải làm trong công tác kế toán. Nên mình muốn hỏi. Chẳng hạn ta có cột số liệu CKy có 15 dòng, Nếu mình dùng Macro ghi lại các thao tác Chọn cột cuối kỳ rồi copy lên cột đầu kỳ thì tháng sau nếu chỉ có 15 dòng thì chạy lại Macro là OK. Nhưng nếu >15 dòng hoặc nhỏ hơn Macro đó chạy không đúng nữa. Các EFC làm như thế nào chỉ giáo cho mình với!
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
37
Nha Trang
#2
Có nhiều cách:
Sau đây là cách dở nhất: Dùng vòng lặp để đếm
Điều kiện cần có: Có một cột có giá trị liên tục để có thể đếm theo cột này cho đến hết (ví dụ là cột B, cột thường dùng để nêu tên). (câu này hơi khó hiểu nhỉ: giải thích thêm: có nghĩa tất cả các dòng trong cột này đề có một cái gì đó chứ không có ô nào bị bỏ trống)
Giả sử: dòng tiêu đề là dòng 5
Đoạn code để đếm:

i = 4
Do
i = i + 1
Loop until range("B" & i)<>""
i = i-1

Sau đó:
Sau đoạn code này thì giá trị của i chính là số dòng của ô cuối cùng của cột dử liệu:
Dùng giá trị của chữ i để thao tác với các ô:
Ví dụ:
- ô cuối cùng của chuổi dử liệu trong cột B là ô: range("B" & i)
- nếu bạn muốn chọn cột H để di chuyển thì dùng: Range("H5:H" & i).select

Có những cách hay hơn nhưng nhờ bạn khám phá. Nếu rảnh tui sẽ trình bày thêm một cách nữa.
OverAC
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
548
51
28
41
Hà Nội
www.bluesofts.net
#3
Bạn không cần Macro mà chỉ cần một hàm Vlookup.
Khi thiết kế bạn tạo trên Report một cột là "Mã" VD ở cột E (đều làm cho các kỳ)
Bạn mở cả 2 Report, sau đó mở Report của kỳ trước đặt tên vùng bắt đầu từ cột "Mã"->"Cuối kỳ" là "Dulieu" (có thể tên khác), mở Report của kỳ này tại cột "Kỳ trước" bạn dùng công thức =VLOOKUP(E4,Dulieu,3,0) (số 3 chính là cột chứa số liệu cuối kỳ trong vùng "Dulieu") Copy cho tất cả các ô.
Với cách làm trên thì số liệu của chỉ tiêu nào sẽ vào chỉ tiêu đó bạn không sợ nhầm, nếu chỉ tiêu nào không có số liệu thì chúng tỏ chỉ tiêu này không có trong kỳ trước.
Chúc bạn thành công!
 
adam_tran

adam_tran

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#4
OverAC nói:
Có nhiều cách:
Sau đây là cách dở nhất: Dùng vòng lặp để đếm
Điều kiện cần có: Có một cột có giá trị liên tục để có thể đếm theo cột này cho đến hết (ví dụ là cột B, cột thường dùng để nêu tên). (câu này hơi khó hiểu nhỉ: giải thích thêm: có nghĩa tất cả các dòng trong cột này đề có một cái gì đó chứ không có ô nào bị bỏ trống)
Mã lệnh này cũng làm được như trên, nhưng cũng dở .. thứ nhì để viết macro dùng chuyển số dư:

Range("B4").Select
Selection.End(xlDown).Select
Lệnh end có các tham số xlDown, xlUp, xlLeft, xlRight thì phải.
Lệnh này cũng dùng để di chuyển ô sáng tới cuối cột/hàng có giá trị (hoặc không giá trị) liên tục. Giống như ta giữ Ctrl + phím di chuyển.

Tốt nhất là tạo một sheet hoặc vùng tổng hợp, rồi dùng vlookup mà chuyển như bạn tuấn nói.
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
16
Trong Mây mù
www.baominh.com.vn
#5
Ý kiến của adamktt cũng hay

Theo mình cấu trúc bảng của bạn phải chuẩn.
Bạn có thể dựa vào điều kiện chuẩn để tìm ô đầu kỳ hay cuối kỳ ví dụ: Tìm chữ "số dư đầu kỳ" rồi di chuyển sang phải 3 ô sẽ là vị trí đặt số dư đầu kỳ.
Đấy là hướng làm của mình với trường hợp này.
Còn mình sẽ không làm như yêu cầu của bạn đâu, mà mình hoặc ban hành công thức số dư đầu tháng sau = số dư cuối tháng trước, hoặc copy rối dán giá trị.
Vì mình chỉ làm macro cho những công việc lặp đi lặp lại, với những trường hợp ít khi lặp lại mình sẽ làm tay thôi (cả tháng mới làm 1 lần như ví dụ này)
 
H

heroic

Sơ cấp
11/11/04
56
0
0
vn
#6
Qua các ý kiến mình vẫn chưa làm được, vì cuối kỳ kết quả là công thức. khi ta chuyển lên đầu kỳ thì phải dán Value. Chắc nhiều người trong chúng ta vẫn làm thủ công là chọn rồi copy dán value sang cột đầu kỳ. Vậy nếu làm được macro hay cách nào đó thì có phải nhanh không? Rồi còn phải xoá phát sinh tháng trước điền mới p/s tháng này.....
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
16
Trong Mây mù
www.baominh.com.vn
#7
heroic nói:
Qua các ý kiến mình vẫn chưa làm được, vì cuối kỳ kết quả là công thức. khi ta chuyển lên đầu kỳ thì phải dán Value. Chắc nhiều người trong chúng ta vẫn làm thủ công là chọn rồi copy dán value sang cột đầu kỳ. Vậy nếu làm được macro hay cách nào đó thì có phải nhanh không? Rồi còn phải xoá phát sinh tháng trước điền mới p/s tháng này.....
Trời ạ!
Thì copy rồi dán giá trị (Nhớ ghi macro quá trình này)
Sau đó sửa lại macro vừa ghi bằng cách thêm đoạn Macro tìm giá trị :"Số đầu kỳ" rồi dịch sang phải 2, 3, 4.. ô tùy theo cấu trúc bảng.
.... thế là được chứ gì.
Ngứa tay quá gõ vài chữ vậy thôi. Mình vẫn bảo lưu ý kiến cũ:
NgânGiang nói:
Còn mình sẽ không làm như yêu cầu của bạn đâu, mà mình hoặc ban hành công thức số dư đầu tháng sau = số dư cuối tháng trước, hoặc copy rối dán giá trị.
Vì mình chỉ làm macro cho những công việc lặp đi lặp lại, với những trường hợp ít khi lặp lại mình sẽ làm tay thôi (cả tháng mới làm 1 lần như ví dụ này)
 
adam_tran

adam_tran

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#8
Lại chuyển số dư -chuyển số trang !!!

Có rất nhiều cách để chuyển số dư! Tớ đưa ra gợi ý sau:
- Giả sử số liệu cả năm 2005 của bạn nhập vào 1 sheet. Thì đầu năm bạn chuyển số dư 2004 qua bằng các NV PS không tài khoản đối ứng. Cột ngày ghi ngày 31-12-2004. Thí dụ số dư nợ TK 111 là 100tr, bạn chỉ cần nhập Nợ 111 - 100tr!
Cách 1: Dùng công thức mảng
Ô A3 chứa giá trị tháng cần in sổ, ô A4 chứa số hiệu TK
{=SUM(IF(Ngay<A3, IF(Taikhoan=A4, Tien, 0), 0))}
Cách 2: Dùng Vlookup
Tạo 1 sheet riêng chỉ để tính số dư đầu kỳ, cuối kỳ, số PS, số PS lũy kế... rồi look up sang.
Những cách trên chỉ áp dụng để in sổ ... 1 năm một lần thì tốt! :lol:
 

Thành viên trực tuyến

  • Luti Phạm
  • daongocnam0603
  • maikhanhhan
  • LTNTT
  • thuongdan
  • xediengiatot



Xem nhiều