Chèn dòng tổng cộng và tính tổng (1 người xem)

Liên hệ QC

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

PHP:
Option Explicit
Sub Copy()
Dim Arr(), dArr(1 To 65536, 1 To 5)
Dim TD As Double, TE As Double, TF As Double, I, J, K

With Sheet1
    Arr = .Range("C7", .[C65000].End(xlUp)).Resize(, 16).Value
End With
For I = 1 To UBound(Arr, 1)
    If Arr(I, 7) = Cells(3, 3) Then
        K = K + 1
        dArr(K, 1) = K
        dArr(K, 2) = Arr(I, 1)
        dArr(K, 3) = Arr(I, 7)
        TD = TD + Arr(I, 7)                     '|'
        dArr(K, 4) = Arr(I, 11)
        TE = TE + Arr(I, 11)                    '|'
        dArr(K, 5) = Arr(I, 9) / 1000
        TF = TF + dArr(K, 5)                    '|'
    End If
Next I
dArr(K + 1, 2) = Sheets("Input").[a3].Value         '+'
dArr(K + 1, 3) = TD:        dArr(K + 1, 4) = TE     '+'
dArr(K + 1, 5) = TF                                 '+'
With Sheet4
    .Range("B9:F5000").ClearContents
    .Range("B9").Resize(K + 2, 5) = dArr            '|'
End With
End Sub
 
Upvote 0
PHP:
Option Explicit
Sub Copy()
Dim Arr(), dArr(1 To 65536, 1 To 5)
Dim TD As Double, TE As Double, TF As Double, I, J, K

With Sheet1
    Arr = .Range("C7", .[C65000].End(xlUp)).Resize(, 16).Value
End With
For I = 1 To UBound(Arr, 1)
    If Arr(I, 7) = Cells(3, 3) Then
        K = K + 1
        dArr(K, 1) = K
        dArr(K, 2) = Arr(I, 1)
        dArr(K, 3) = Arr(I, 7)
        TD = TD + Arr(I, 7)                     '|'
        dArr(K, 4) = Arr(I, 11)
        TE = TE + Arr(I, 11)                    '|'
        dArr(K, 5) = Arr(I, 9) / 1000
        TF = TF + dArr(K, 5)                    '|'
    End If
Next I
dArr(K + 1, 2) = Sheets("Input").[a3].Value         '+'
dArr(K + 1, 3) = TD:        dArr(K + 1, 4) = TE     '+'
dArr(K + 1, 5) = TF                                 '+'
With Sheet4
    .Range("B9:F5000").ClearContents
    .Range("B9").Resize(K + 2, 5) = dArr            '|'
End With
End Sub
Bạn ơi cột C chưa có chữ tổng cộng và có thể kẻ thêm viền ô khi chạy code không?
 
Upvote 0
Trong khi chờ đợi thì ......

Mã:
Option Explicit
Sub Copy()
Dim Arr(), dArr(1 To 65536, 1 To 5)
Dim TD As Double, TE As Double, TF As Double, I, J, K


With Sheet1
    Arr = .Range("C7", .[C65000].End(xlUp)).Resize(, 16).Value
End With
For I = 1 To UBound(Arr, 1)
    If Arr(I, 7) = Cells(3, 3) Then
        K = K + 1
        dArr(K, 1) = K
        dArr(K, 2) = Arr(I, 1)
        dArr(K, 3) = Arr(I, 7)
        TD = TD + Arr(I, 7)                     '|'
        dArr(K, 4) = Arr(I, 11)
        TE = TE + Arr(I, 11)                    '|'
        dArr(K, 5) = Arr(I, 9) / 1000
        TF = TF + dArr(K, 5)                    '|'
    End If
Next I
dArr(K + 1, 2) = Sheets("Input").[a3].Value         '+'
dArr(K + 1, 3) = TD:        dArr(K + 1, 4) = TE     '+'
dArr(K + 1, 5) = TF:        dArr(K + 1, 2) = "T" & ChrW$(7893) & "ng C" & ChrW$(7897) & "ng"                      '+'
With Sheet4
    .Range("B9:F5000").ClearContents
    .Range("B9").Resize(K + 2, 5) = dArr            '|'
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeTop).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeRight).LineStyle = xlContinuous
End With
End Sub
Phần dòng kẻ chưa chính xác bạn ạ. nó chỉ kẻ viền bên ngoài thôi. mình gửi file lên bạn sửa lại giúp mình với nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7YkRCaW00S0R6a1U/view?pli=1
 
Upvote 0
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeTop).LineStyle = xlContinuous
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeLeft).LineStyle = xlContinuous
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeRight).LineStyle = xlContinuous
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlInsideVertical).LineStyle = xlContinuous
.Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlInsideHorizontal).LineStyle = xlContinuous
lêu lêu record .-0-/.-0-/.-0-/.-0-/.
 
Upvote 0
Điều kiện là bằng ô C3 ở sheet "input". cho mình thêm chút là kẻ thêm viền kẻ khi chạy code cho những ô thỏa man điều kiện nhé
Thêm tí tẹo vào code của thầy Hải yến :

Option Explicit
Sub Copy3()
Dim Arr(), dArr(1 To 65536, 1 To 5)
Dim TD As Double, TE As Double, TF As Double, I, J, K


With Sheet1
Arr = .Range("C7", .[C65000].End(xlUp)).Resize(, 16).Value
End With
For I = 1 To UBound(Arr, 1)
If Arr(I, 7) = Cells(3, 3) Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = Arr(I, 1)
dArr(K, 3) = Arr(I, 7)
TD = TD + Arr(I, 7) '|'
dArr(K, 4) = Arr(I, 11)
TE = TE + Arr(I, 11) '|'
dArr(K, 5) = Arr(I, 9) / 1000
TF = TF + dArr(K, 5) '|'
End If
Next I
dArr(K + 1, 2) = Sheets("Input").[a3].Value '+'
dArr(K + 1, 3) = TD: dArr(K + 1, 4) = TE '+'
dArr(K + 1, 5) = TF '+'
With Sheet4
.Range("B9:F5000").ClearContents
.Range("B9").Resize(K + 2, 5) = dArr
.Range("B9").Resize(K + 1, 5).Borders.LineStyle = 1
.Range("B9").Offset(K, 1) = "T" & ChrW$(7893) & "ng C" & ChrW$(7897) & "ng"
End With
End Sub
 
Upvote 0
Trong khi chờ đợi....

Mã:
Option Explicit
Sub Copy()
Dim Arr(), dArr(1 To 65536, 1 To 5)
Dim TD As Double, TE As Double, TF As Double, I, J, K


With Sheet1
    Arr = .Range("C7", .[C65000].End(xlUp)).Resize(, 16).Value
End With
For I = 1 To UBound(Arr, 1)
    If Arr(I, 7) = Cells(3, 3) Then
        K = K + 1
        dArr(K, 1) = K
        dArr(K, 2) = Arr(I, 1)
        dArr(K, 3) = Arr(I, 7)
        TD = TD + Arr(I, 7)                     '|'
        dArr(K, 4) = Arr(I, 11)
        TE = TE + Arr(I, 11)                    '|'
        dArr(K, 5) = Arr(I, 9) / 1000
        TF = TF + dArr(K, 5)                    '|'
    End If
Next I
dArr(K + 1, 2) = Sheets("Input").[a3].Value         '+'
dArr(K + 1, 3) = TD:        dArr(K + 1, 4) = TE     '+'
dArr(K + 1, 5) = TF:        dArr(K + 1, 2) = "T" & ChrW$(7893) & "ng C" & ChrW$(7897) & "ng"                      '+'
With Sheet4
    .Range("B9:F5000").EntireRow.Delete
    .Range("B9").Resize(K + 2, 5) = dArr            '|'
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeTop).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlEdgeRight).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlInsideVertical).LineStyle = xlContinuous
    .Range("B8:F" & .Range("C" & Rows.Count).End(3).Row).Borders(xlInsideHorizontal).LineStyle = xlContinuous
    .Range("B" & .Range("C" & Rows.Count).End(3).Row & ":F" & .Range("C" & Rows.Count).End(3).Row).Font.Bold = True
End With
End Sub
Dòng này "dArr(K + 1, 2) = Sheets("Input").[a3].Value" có nghĩa là gì ạ. Bạn có thể giải thích sơ quá về đoạn code vừa được thêm vào không. Rất cám ơn bạn
 
Upvote 0
Theo mình thì làm thế này là tiện nhất:

Ta có thể lấy dòng thứ 99, hay 999 hoặc 9999 nào đó & lập sẵn các công thức tổng & từ "Tổng cộng" vố cột [C] của dòng chọn này;

Tiến hành kể khung từ dòng chọn này trở lên trên theo í muốn;

Sau khi chạy Code của tác giả xong; ta chỉ việc tìm dòng dưới dòng cuối có số liệu & đem ẩn các dòng kể từ dòng này cho đến dòng đã chọn bên trên;

Có 2 chú í nhỏ:

(1) Dòng được chọn tùy thuộc vô dữ liệu của bạn;
(2) Vô đầu macro, ta fải cho hiện hết các dòng đã ẩn do lần chạy macro kì trước kế nó

Chúc vui vẻ & thành công!
 
Upvote 0
Hic. Cũng đã từng làm như anh Chanh, nhưng đối với dữ liệu ít dòng thì mình hoàn toàn đặt sẵn form, kẻ khung,....chạy code ẩn dòng Empty...thì lúc đó file vưa nhẹ, code vừa chạy nhanh.
(2) Nhưng nếu dữ liệu rất rất nhiều dòng..............thì việc Format sẵn form, kẻ khung,....., sau đó chạy code ẩn dòng hoặc trước khi chạy code phải bỏ ẩn dòng........thì là 1 cực hình. Vì lúc này làm dữ liệu cho file nặng, rồi unhide dòng lâu lắc..........hixxx

(1) Nếu được anh @Chanh có thể làm 1 đoạn code tối ưu cho việc ẩn/ bỏ ẩn dòng mà tốc độ cực nhanh không anh??? (với điều kiện là vài ngàn dòng trở lên...)

(1) Do không thể đọc file của chủ topic nên bạn cảm fiền đến đây: http://www.giaiphapexcel.com/forum/...-tự-chèn-thêm-hoặc-bớt-dòng-trong-excel/page2

(2) Nếu nhiều dòng đi chăng nữa thì tốc độ format các dòng không thể nhanh hơn việc ẩn cái rụp vùng cần ẩn.
Nó toàn bộ chì là 3 câu lệnh:
PHP:
1 Rows("3:9999").Hidden=false  'Hiện toàn bộ'
  ' . . . . . . . . . . . . . '  
 '  . . . . . . . . . . . . . ' 
2  Rws = [C3].End(xlDown).Row +1
3 Rows( Rws & ":9999").Hidden=true
 
Upvote 0
Úi.............đâu phải code tôi viết mà lại hỏi nhỉ???
Bạn hỏi ai code cho bạn í... (thầy Hải Yến gì ấy)..........tôi chỉ giúp bạn phần thêm chữ tổng cộng & kẻ khung/ code của thầy ấy..Còn lại thì bạn hỏi tác giả nhé!
Thân ái

P/s: mà theo tôi dòng đó thầy ấy viết bị dư.......chẳng có ý nghĩa gì cả. Hoăc là thầy ấy cố tình để dòng đó.........
Gõ vào A3 chữ tổng cộng. chạy code thì nó lấy và gán xuống cột C mong muốn cho bạn...........chắc thầy ấy làm biếng viết Unicode trong cửa sổ VBE nên vậy.........kaka
mình còn khúc mắc một chỗ cần thay đổi code 1 tí. Ban sửa giúp minh với nhé. Mình đã ghi yêu cầu trong file. Rất cám ơn bạn
https://drive.google.com/file/d/0Bx6z3YcGDvh7dmNuQzg5Qm5uU28/view?usp=sharing
 
Upvote 0
Theo mình thì làm thế này là tiện nhất:

Ta có thể lấy dòng thứ 99, hay 999 hoặc 9999 nào đó & lập sẵn các công thức tổng & từ "Tổng cộng" vố cột [C] của dòng chọn này;

Tiến hành kể khung từ dòng chọn này trở lên trên theo í muốn;

Sau khi chạy Code của tác giả xong; ta chỉ việc tìm dòng dưới dòng cuối có số liệu & đem ẩn các dòng kể từ dòng này cho đến dòng đã chọn bên trên;

Có 2 chú í nhỏ:

(1) Dòng được chọn tùy thuộc vô dữ liệu của bạn;
(2) Vô đầu macro, ta fải cho hiện hết các dòng đã ẩn do lần chạy macro kì trước kế nó

Chúc vui vẻ & thành công!
anh có thể làm ví dụ trong file của em không. chứ anh nói thế em cung không biết làm thế nào **~**
 
Upvote 0

File đính kèm

Upvote 0
Bạn ơi cột tồn tính lũy kế chưa chính xác. Mình gửi file bạn xem sửa lại giúp mình nhé. Cám ơn bạn
https://drive.google.com/file/d/0Bx6z3YcGDvh7UVNoQkFVMkRfR1k/view?usp=sharing
Chiều mình đi vắng , giờ mới xem được , nhưng hình như bạn cũng nhầm thì phải . Mình không phải nghề nên kiểm tra mãi không tìm ra kết quả giống file bạn gửi . Bạn xem thử file xem được chưa ?
 

File đính kèm

Upvote 0
Chiều mình đi vắng , giờ mới xem được , nhưng hình như bạn cũng nhầm thì phải . Mình không phải nghề nên kiểm tra mãi không tìm ra kết quả giống file bạn gửi . Bạn xem thử file xem được chưa ?
NgoaiThanh ẩn giật lấu quá! Lâu lắm rồi mới gặp!-\\/.
 
Upvote 0
Chiều mình đi vắng , giờ mới xem được , nhưng hình như bạn cũng nhầm thì phải . Mình không phải nghề nên kiểm tra mãi không tìm ra kết quả giống file bạn gửi . Bạn xem thử file xem được chưa ?
Nhờ sự giúp đỡ của bạn mình đã giải quyết được vấn đề. tiện đây mình vẫn còn 1 yêu cầu nữa nhưng loay hoay không làm được. Mình gửi file lên bạn giúp mình nốt code này nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7QmhrYmRtbVhTX1E/view?usp=sharing
 
Upvote 0
Hình như là số ngay cột tồn cuối (cùng hàng, cách 3 cell so với chữ tồn cuối) bị sai kết quả rồi anh. đúng phải là = số lũy kế cuối cùng ở trên chử nhỉ???
Thì mình đã bảo mình không phải nghề nên tính thế nào là do chủ "thớt" yêu cầu . Nếu chưa đúng thì phản hồi lại ( nhưng theo mình thì phải cộng tồn của ngày trước với nhập trừ xuất của ngày hiện tại !)
 
Upvote 0
Thì mình đã bảo mình không phải nghề nên tính thế nào là do chủ "thớt" yêu cầu . Nếu chưa đúng thì phản hồi lại ( nhưng theo mình thì phải cộng tồn của ngày trước với nhập trừ xuất của ngày hiện tại !)
Đủng rồi anh. Lũy kế bằng cộng tồn ngày trước với nhập trừ xuất. file trên của anh bị bỏ mất dòng số dư cuối kỳ rôi
 
Upvote 0
Nhờ sự giúp đỡ của bạn mình đã giải quyết được vấn đề. tiện đây mình vẫn còn 1 yêu cầu nữa nhưng loay hoay không làm được. Mình gửi file lên bạn giúp mình nốt code này nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7QmhrYmRtbVhTX1E/view?usp=sharing
Gửi : Anh Ngoai Thanh
Anh có thể sửa lại code giúp em với yêu cầu của file này không. Rất mong sự giúp đỡ của anh
 
Upvote 0
Nhờ sự giúp đỡ của bạn mình đã giải quyết được vấn đề. tiện đây mình vẫn còn 1 yêu cầu nữa nhưng loay hoay không làm được. Mình gửi file lên bạn giúp mình nốt code này nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7QmhrYmRtbVhTX1E/view?usp=sharing
Bạn nên tìm trên diễn đàn các bài Loc tài khỏan mà áp dụng , sẽ hay hơn nhiều với cách là theo công thức của bạn . Với công thức vậy khi dữ liệu nhiều file nặng và sẽ chạy rất chậm . Nếu vẫn muốn công thức thì làm sau .
 
Upvote 0
ý em là có thể viết code nào để cho ra kết quả giống công thức trong file e gửi lên không ạ. tại em cũng tìm theo lọc tài khoản nhưng chưa biết cách sửa lại code cho ra kết quả đúng như thế. anh sửa giúp em với nhé
 
Upvote 0
ý em là có thể viết code nào để cho ra kết quả giống công thức trong file e gửi lên không ạ. tại em cũng tìm theo lọc tài khoản nhưng chưa biết cách sửa lại code cho ra kết quả đúng như thế. anh sửa giúp em với nhé
Thứ nhất bạn hỏi chủ đề " Chèn dòng tổng cộng và tính tổng !" , bạn bảo còn thiếu dòng số dư cuối kỳ , yêu cầu trước hình như không có , nếu bổ xung thì bổ xung vào đâu? và số liệu bằng (công thức thế nào ?).
Thứ 2 là bạn hỏi lọc tài khoản , tức là sang chủ đề khác, vậy bạn phải hỏi sang chủ đề mới , nếu không bài sẽ bị xóa ( vi phạm nội quy )
thứ 3 là : Bạn đưa nội dung như thực lên ( tránh việc bổ xung yêu cầu dài lê thê , mất thời gian lắm !)
 
Upvote 0
Thứ nhất bạn hỏi chủ đề " Chèn dòng tổng cộng và tính tổng !" , bạn bảo còn thiếu dòng số dư cuối kỳ , yêu cầu trước hình như không có , nếu bổ xung thì bổ xung vào đâu? và số liệu bằng (công thức thế nào ?).
Thứ 2 là bạn hỏi lọc tài khoản , tức là sang chủ đề khác, vậy bạn phải hỏi sang chủ đề mới , nếu không bài sẽ bị xóa ( vi phạm nội quy )
thứ 3 là : Bạn đưa nội dung như thực lên ( tránh việc bổ xung yêu cầu dài lê thê , mất thời gian lắm !)
Hồi trước là em lấy code cho phiếu nhập xuất và thẻ kho, nhờ có sự giúp đỡ của anh và các thành viên thì em đã áp dụng được rồi bây h chỉ còn mắc một chỗ là sổ cái tài khoản như file em gửi ở link cuối mà sửa mãi không ra, đấy là file giả lập như thực rồi ạ. em có viết công thức như ở đấy nhưng không biết viết sửa code thế nào, nếu dùng công thức trong số liệu lơn file sẽ rất chậm :(
 
Upvote 0
Hồi trước là em lấy code cho phiếu nhập xuất và thẻ kho, nhờ có sự giúp đỡ của anh và các thành viên thì em đã áp dụng được rồi bây h chỉ còn mắc một chỗ là sổ cái tài khoản như file em gửi ở link cuối mà sửa mãi không ra, đấy là file giả lập như thực rồi ạ. em có viết công thức như ở đấy nhưng không biết viết sửa code thế nào, nếu dùng công thức trong số liệu lơn file sẽ rất chậm :(

đã dùng code thì code hết chứ dùng code chèn công thức vào ô làm chi nữa .
nhưng có điều bạn ghi câu này vào ô A1 nên tôi trốn luôn
Cám ơn người giúp ḿnh là điều không thể !
 
Upvote 0
Hồi trước là em lấy code cho phiếu nhập xuất và thẻ kho, nhờ có sự giúp đỡ của anh và các thành viên thì em đã áp dụng được rồi bây h chỉ còn mắc một chỗ là sổ cái tài khoản như file em gửi ở link cuối mà sửa mãi không ra, đấy là file giả lập như thực rồi ạ. em có viết công thức như ở đấy nhưng không biết viết sửa code thế nào, nếu dùng công thức trong số liệu lơn file sẽ rất chậm :(
Dù tôi hoặc ai khác giúp bạn, nếu vi phạm nội quy bài vẫn bị xóa . bạn nên lập chủ đề mới nhé ! khỏi mất công bạn và người khác .
 
Upvote 0

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

Back
Top Bottom