tự động điều chỉnh dòng tùy thuộc vào độ dài của dữ liệu (1 người xem)

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

katylove83

Thành viên hoạt động
Tham gia
22/2/13
Bài viết
166
Được thích
9
chào các anh chị

em có file này như sau:

khi chọn F3 mã tài khoản thì sẽ lọc ra các dữ liệu tuy nhiên mỗi mã tài khoản thì có độ dài dữ liệu khác nhau, nếu em muốn in thì phải ẩn đi những dòng không có dữ liệu

vậy em muốn file này sẻ tự động hiểu khi chọn mã tk tại ô F3 thì sẽ tự động điều chỉnh form báo cáo và bỏ đi những ô trống bên dưới, hoặc nếu có dữ liệu dài hơn thì nó sẻ tự động kéo dài ra,
tuy nhiên các dòng "cộng số phát sinh" và dòng số dư cuối kỳ, chữ ký... ở phía dưới vẫn dữ nguyên các ô F204,f205, g204,g205 vẫn tính đúng kết quả.các boders vẫn hiển thị khi có dữ liệu kéo dài

xem file đính kèm

cám ơn
 

File đính kèm

chào các anh chị

em có file này như sau:

khi chọn F3 mã tài khoản thì sẽ lọc ra các dữ liệu tuy nhiên mỗi mã tài khoản thì có độ dài dữ liệu khác nhau, nếu em muốn in thì phải ẩn đi những dòng không có dữ liệu

vậy em muốn file này sẻ tự động hiểu khi chọn mã tk tại ô F3 thì sẽ tự động điều chỉnh form báo cáo và bỏ đi những ô trống bên dưới, hoặc nếu có dữ liệu dài hơn thì nó sẻ tự động kéo dài ra,
tuy nhiên các dòng "cộng số phát sinh" và dòng số dư cuối kỳ, chữ ký... ở phía dưới vẫn dữ nguyên các ô F204,f205, g204,g205 vẫn tính đúng kết quả.các boders vẫn hiển thị khi có dữ liệu kéo dài

xem file đính kèm

cám ơn
Thử sửa lại đoạn code này
PHP:
With Sheet4
    .[b14:g200].ClearContents
    .[B14:B200].SpecialCells(4).EntireRow.Hidden = False
    .[b14].Resize(k, 6) = socai
    .[B14:B200].SpecialCells(4).EntireRow.Hidden = True
End With
 
Upvote 0
chào các anh chị

em có file này như sau:

khi chọn F3 mã tài khoản thì sẽ lọc ra các dữ liệu tuy nhiên mỗi mã tài khoản thì có độ dài dữ liệu khác nhau, nếu em muốn in thì phải ẩn đi những dòng không có dữ liệu

vậy em muốn file này sẻ tự động hiểu khi chọn mã tk tại ô F3 thì sẽ tự động điều chỉnh form báo cáo và bỏ đi những ô trống bên dưới, hoặc nếu có dữ liệu dài hơn thì nó sẻ tự động kéo dài ra,
tuy nhiên các dòng "cộng số phát sinh" và dòng số dư cuối kỳ, chữ ký... ở phía dưới vẫn dữ nguyên các ô F204,f205, g204,g205 vẫn tính đúng kết quả.các boders vẫn hiển thị khi có dữ liệu kéo dài

xem file đính kèm

cám ơn
Muốn giữ chữ ký và tổng thì thêm tý này vào dưới đoạn code của Quang Hải :

[f204].FormulaR1C1 = "=SUM(R[-190]C:R[-2]C)"
[G204].FormulaR1C1 = "=SUM(R[-190]C:R[-2]C)"
[f205].FormulaR1C1 = "=R[-1]C-R[-1]C[1]"
[D204] = "C" & ChrW(7897) & "ng s" & ChrW(7889) & " phát sinh"
[D205] = "S" & ChrW(7889) & " d" & ChrW(432) & " cu" & ChrW(7889) & "i k" & ChrW(7923)
[B208] = "Ng" & ChrW(432) & ChrW(7901) & "i ghi s" & ChrW(7893)
[B209] = "(Ký, h" & ChrW(7885) & " tên)"
[D208] = "K" & ChrW(7871) & " toán tr" & ChrW(432) & ChrW(7903) & "ng"
[D208] = "(Ký, h" & ChrW(7885) & " tên)"
[F207] = "Ngày tháng n" & ChrW(259) & "m 200..."
[F208] = "Giám " & ChrW(273) & ChrW(7889) & "c"
[F209] = "(Ký, h" & ChrW(7885) & " tên)"
 
Upvote 0
Muốn giữ chữ ký và tổng thì thêm tý này vào dưới đoạn code của Quang Hải :

[f204].FormulaR1C1 = "=SUM(R[-190]C:R[-2]C)"
[G204].FormulaR1C1 = "=SUM(R[-190]C:R[-2]C)"
[f205].FormulaR1C1 = "=R[-1]C-R[-1]C[1]"
[D204] = "C" & ChrW(7897) & "ng s" & ChrW(7889) & " phát sinh"
[D205] = "S" & ChrW(7889) & " d" & ChrW(432) & " cu" & ChrW(7889) & "i k" & ChrW(7923)
[B208] = "Ng" & ChrW(432) & ChrW(7901) & "i ghi s" & ChrW(7893)
[B209] = "(Ký, h" & ChrW(7885) & " tên)"
[D208] = "K" & ChrW(7871) & " toán tr" & ChrW(432) & ChrW(7903) & "ng"
[D208] = "(Ký, h" & ChrW(7885) & " tên)"
[F207] = "Ngày tháng n" & ChrW(259) & "m 200..."
[F208] = "Giám " & ChrW(273) & ChrW(7889) & "c"
[F209] = "(Ký, h" & ChrW(7885) & " tên)"

Trời ơi thêm vào làm chi, mọi thứ đã được giữ như nguyên thuỷ rồi mà
 
Upvote 0
Hình như nó "đả" sạch trước khi ta đến rồi .
Code nguyên thủy là Resize(i) nên xóa sạch mọi thứ, mình chỉnh lại Resize(k) nên vẫn còn nguyên. Bói là dữ liệu của tác giả sẽ không vượt quá số dòng 200 nên không sửa code nhiều. Nếu không phải xài chiêu khác thôi.
 
Upvote 0
Code nguyên thủy là Resize(i) nên xóa sạch mọi thứ, mình chỉnh lại Resize(k) nên vẫn còn nguyên. Bói là dữ liệu của tác giả sẽ không vượt quá số dòng 200 nên không sửa code nhiều. Nếu không phải xài chiêu khác thôi.
thì vì muốn giữ nguyên thủy của họ không muốn can thiệp nên mình mới thêm cái đống trên . thôi thế cũng xong .
 
Upvote 0
Code nguyên thủy là Resize(i) nên xóa sạch mọi thứ, mình chỉnh lại Resize(k) nên vẫn còn nguyên. Bói là dữ liệu của tác giả sẽ không vượt quá số dòng 200 nên không sửa code nhiều. Nếu không phải xài chiêu khác thôi.

anh ơi dữ liệu có thể lên hơn 200 dòng là bình thường, vậy a làm sao viết lại giúp em được không? nếu cần thì có thể thay đổi code nguyên thủy trước đó cũng được

với lại anh hiểu sai ý em rồi, điều em muốn không phải là ẩn đi dòng trống mà là muốn dữ liệu hiện ra tự động luôn,
ví dụ: dử liệu 50 dòng thì chỉ hiển thị đủ 50 dòng đó thôi đến khi chọn tk khác nếu có 100 dòng thi sẻ hiện 100 dòng thôi, ko phải ẩn đi
anh xem lại giúp em nhé
 
Lần chỉnh sửa cuối:
Upvote 0
anh ơi dữ liệu có thể lên hơn 200 dòng là bình thường, vậy a làm sao viết lại giúp em được không? nếu cần thì có thể thay đổi code nguyên thủy trước đó cũng được

với lại anh hiểu sai ý em rồi, điều em muốn không phải là ẩn đi dòng trống mà là muốn dữ liệu hiện ra tự động luôn,
ví dụ: dử liệu 50 dòng thì chỉ hiển thị đủ 50 dòng đó thôi đến khi chọn tk khác nếu có 100 dòng thi sẻ hiện 100 dòng thôi, ko phải ẩn đi
anh xem lại giúp em nhé
Không thấy cái tối thiểu, Không thấy Quang hải có ý kiến, mình đã thôi không ngó nữa , nhưng làm để đấy cũng khó chịu , thôi thì ...
to cachabu mình đã đổi file theo ý bạn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Không thấy cái tối thiểu, Không thấy Quang hải có ý kiến, mình đã thôi không ngó nữa , nhưng làm để đấy cũng khó chịu , thôi thì ...
anh ơi hình như anh làm sai cái code củ rồi, bản chất cái code củ không phải là trích lọc theo mã tài khoản , mà là đối ứng của tk này là tài khoản kia

anh làm theo yêu cầu mới là đúng ý rồi nhưng cái code củ thì bị sai, với lại ko hiểu sao nó chạy rất chậm
nhờ anh xem lại giúp em nhé
cám ơn anh
 
Upvote 0
anh ơi hình như anh làm sai cái code củ rồi, bản chất cái code củ không phải là trích lọc theo mã tài khoản , mà là đối ứng của tk này là tài khoản kia

anh làm theo yêu cầu mới là đúng ý rồi nhưng cái code củ thì bị sai, với lại ko hiểu sao nó chạy rất chậm
nhờ anh xem lại giúp em nhé
cám ơn anh
Hình như bạn không phải chủ topic này, vả lại mình có thấy cột tài khoản đối ứng đâu ? Nói chung mình không phải dân kế toán nên thấy mỗi cột G sheet nkc thì làm theo thôi . lọc dữ liệu nhiều thì Adxanced chậm là đúng rồi .
 
Lần chỉnh sửa cuối:
Upvote 0
Hình như bạn không phải chủ topic này, vả lại mình có thấy cột tài khoản đối ứng đâu ? Nói chung mình không phải dân kế toán nên thấy mỗi cột G sheet nkc thì làm theo thôi . lọc dữ liệu nhiều thì Adxanced chậm là đúng rồi .

cám on anh cachabu thực ra như a nói thì đúng rồi, phần trích lọc điều kiện là đối đối ứng cái này la cái kia, anh xem lại code củ anh nhé
 
Upvote 0
anh ơi hình như anh làm sai cái code củ rồi, bản chất cái code củ không phải là trích lọc theo mã tài khoản , mà là đối ứng của tk này là tài khoản kia

anh làm theo yêu cầu mới là đúng ý rồi nhưng cái code củ thì bị sai, với lại ko hiểu sao nó chạy rất chậm
nhờ anh xem lại giúp em nhé
cám ơn anh

Muốn giữ cái cũ thì viết code cho phần cuối riêng và sửa tý tẹo , ban copy đống này thay toàn bộ cái cũ ( thực ra nó có trong này rồi ). Bạn tải lại file của bài #9 mình đã đổi lại file

Sub TK()
Dim nck As Variant, socai(), i, j, k As Long
nck = Sheet1.[c15:i15].Resize(Sheet1.[c10000].End(3).Row).Value
ReDim socai(1 To UBound(nck), 1 To 7)
For i = 1 To UBound(nck)
If nck(i, 5) = Sheet4.[f3] Then
n = 1
k = k + 1
If Not IsNumeric(nck(i, 6)) Then n = -1
socai(k, 1) = nck(i + n, 1)
socai(k, 2) = nck(i + n, 2)
socai(k, 3) = nck(i + n, 3)
socai(k, 4) = nck(i + n, 5)
socai(k, 5) = nck(i + n, 6)
socai(k, 6) = nck(i + n, 7)
End If
Next i


With Sheet4
.[b14:g200].Clear
.[b14].Resize(i, 6) = socai
End With


Erase nck, socai


Rows("219:220").Clear
Call cuoi
End Sub


Sub cuoi()
Dim n As Long
n = Sheet4.Range("B65536").End(xlUp).Row
With Range("D" & n)
.Offset(1) = "C" & ChrW(7897) & "ng s" & ChrW(7889) & " phát sinh"
.Offset(2) = "S" & ChrW(7889) & " d" & ChrW(432) & " cu" & ChrW(7889) & "i k" & ChrW(7923)
.Offset(5, -2) = "Ng" & ChrW(432) & ChrW(7901) & "i ghi s" & ChrW(7893)
.Offset(6, -2) = "(Ký, h" & ChrW(7885) & " tên)"
.Offset(5) = "K" & ChrW(7871) & " toán tr" & ChrW(432) & ChrW(7903) & "ng"
.Offset(6) = "(Ký, h" & ChrW(7885) & " tên)"
.Offset(4, 2) = "Ngày tháng n" & ChrW(259) & "m 200..."
.Offset(5, 2) = "Giám " & ChrW(273) & ChrW(7889) & "c"
.Offset(6, 2) = "(Ký, h" & ChrW(7885) & " tên)"
End With
Range("B14:g" & n + 2).Resize(, 6).Borders.LineStyle = xlContinuous
Range("D" & n).Offset(1, 2).Select
ActiveCell.FormulaR1C1 = "=SUM(R16C6:R[-1]C)"
Range("D" & n).Offset(1, 3).Select
ActiveCell.FormulaR1C1 = "=SUM(R16C7:R[-1]C)"
Range("D" & n).Offset(2, 2).Select
ActiveCell.FormulaR1C1 = "=R[-1]C-R[-1]C[1]"
Range("B14:g" & n + 15).Resize(, 6).Select
Selection.Font.ColorIndex = 5
Range("D15").Select
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
anh ơi dữ liệu có thể lên hơn 200 dòng là bình thường, vậy a làm sao viết lại giúp em được không? nếu cần thì có thể thay đổi code nguyên thủy trước đó cũng được

với lại anh hiểu sai ý em rồi, điều em muốn không phải là ẩn đi dòng trống mà là muốn dữ liệu hiện ra tự động luôn,
ví dụ: dử liệu 50 dòng thì chỉ hiển thị đủ 50 dòng đó thôi đến khi chọn tk khác nếu có 100 dòng thi sẻ hiện 100 dòng thôi, ko phải ẩn đi
anh xem lại giúp em nhé
Xem thử coi đúng không, mình cốc biết tí gì về kế toán cả nên làm hên xui nha. Khuyến mãi thêm cái validation tự động
 

File đính kèm

Upvote 0
cám on anh cachabu thực ra như a nói thì đúng rồi, phần trích lọc điều kiện là đối đối ứng cái này la cái kia, anh xem lại code củ anh nhé
À, mình hiểu rồi, té ra là lọc từ sổ cái (2) sang . Vậy thì chuyển sang sheet mới chi cho mệt . copy luôn code cuoi sang sheet sổ cái (2) luôn có hơn không ?!
 
Upvote 0
Xem thử coi đúng không, mình cốc biết tí gì về kế toán cả nên làm hên xui nha. Khuyến mãi thêm cái validation tự động
giải pháp đẩy xuống vừa đơn giản vừa hay, đúng là Quang Hải ! Mà cái Avata đẹp trai ngày trước của bạn sao lại bỏ nhỉ ?
 
Lần chỉnh sửa cuối:
Upvote 0
giải pháp đẩy xuống vừa đơn giản vừa hay, đúng là Quang Hải ! Mà cái Avata đẹp trai ngày trước của bạn sao lại bỏ nhỉ ?
Mình thuộc mẫu người đơn giản, trực tiếp nên code cũng thật giản đơn, nhìn vào là hiểu ngay.
**********
Avatar vẫn còn đó, nhưng chắc có ai đó ganh tị nên không cho hiện ra đấy thôi mà.
 
Upvote 0
Mình thuộc mẫu người đơn giản, trực tiếp nên code cũng thật giản đơn, nhìn vào là hiểu ngay.
**********
Avatar vẫn còn đó, nhưng chắc có ai đó ganh tị nên không cho hiện ra đấy thôi mà.
spam tý :
Nếu có chị em nào ghé qua đây thì nhớ cho rằng có ai đó thấy Quang Hải đẹp giai quá nên ghen tỵ không cho hiện Avatar nhé !
 
Upvote 0
Xem thử coi đúng không, mình cốc biết tí gì về kế toán cả nên làm hên xui nha. Khuyến mãi thêm cái validation tự động
cám ơn anh hải
em kiểm tra thì thấy đúng rồi, nhưng cách viết cái code của anh thì lại khác code trước, vậy anh hải có thể cho em biết là anh viết lại code như vậy về cơ bản có gì khac nhau không, cách viết của anh dựa vào nội dung của code trước rồi lập luận lại theo hướng khác đúng ko vậy? vì em cũng it rành về vba nên cung chưa phân biệt được code của anh và code của trước kia.
 
Upvote 0
Xem thử coi đúng không, mình cốc biết tí gì về kế toán cả nên làm hên xui nha. Khuyến mãi thêm cái validation tự động
anh quang hải xem lại giúp em , cái code của anh hoạt động ok, nhưng mà cái vavidation thì khó chịu quá, vì nếu em thay đổi mã số khác nó không hiểu nếu như em ko muốn dùng cái validation co được không. cái của anh add luc em xóa đi nó cũng tự động có lại ah, ko hiểu sao nữa
 
Upvote 0
anh quang hải xem lại giúp em , cái code của anh hoạt động ok, nhưng mà cái vavidation thì khó chịu quá, vì nếu em thay đổi mã số khác nó không hiểu nếu như em ko muốn dùng cái validation co được không. cái của anh add luc em xóa đi nó cũng tự động có lại ah, ko hiểu sao nữa
Trong code TK, tìm dòng cuối, xóa đi câu lệnh Validation là được
 
Upvote 0
em cũng tìm và xóa rồi nhưng tự động co giãn dòng và có thêm chữ ký nữa nó không hoạt động

1. Mở file lên, vào chế độ design để không cho code chạy
2. Copy 1 ô trống bên ngoài dán vào cái ô F3
3. Qua sheet nkc chuyển định dạng cho cột F
4. Thoát chế độ design và nhập tk vào F3 sẽ được
 
Upvote 0
1. Mở file lên, vào chế độ design để không cho code chạy
2. Copy 1 ô trống bên ngoài dán vào cái ô F3
3. Qua sheet nkc chuyển định dạng cho cột F
4. Thoát chế độ design và nhập tk vào F3 sẽ được
khôn còn cách nào khác hả anh, hic hic, dùng code vba như vậy thấy nó chạy không có ngọt cho lắm.
có vào thử rồi nhưng mà lúc báo lỗi thì nó chạy ra cai gi gi không biết luôn
 
Upvote 0
khôn còn cách nào khác hả anh, hic hic, dùng code vba như vậy thấy nó chạy không có ngọt cho lắm.
có vào thử rồi nhưng mà lúc báo lỗi thì nó chạy ra cai gi gi không biết luôn

Cách thì luôn có, không có gì là khó, mà nếu khó quá thì...bỏ. Thế thôi.
 

File đính kèm

Upvote 0

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

Back
Top Bottom