Đoạn code này của em sai chổ nào

  • Thread starter Thread starter NH_DK
  • Ngày gửi Ngày gửi
Liên hệ QC

NH_DK

Let's patience
Tham gia
29/7/10
Bài viết
865
Được thích
1,203
Nghề nghiệp
Kế toán
A/C xem dùm em code này sai ở chổ nào nhé!?

PHP:
Option Explicit

Sub Macro1()
Dim n As Long
n = Range("C65000").End(xlUp).Row
    With Range("C" & n + 1)
        .FormulaR1C1 = "=SUBTOTAL(9,R[-8]C:R[-1]C)"
        .Font.Bold = True
        .NumberFormat = "( #,##0)"
    End With
       
End Sub

Em cám ơn A/C nhiều!
 

File đính kèm

A/C xem dùm em code này sai ở chổ nào nhé!?

PHP:
Option Explicit

Sub Macro1()
Dim n As Long
n = Range("C65000").End(xlUp).Row
    With Range("C" & n + 1)
        .FormulaR1C1 = "=SUBTOTAL(9,R[-8]C:R[-1]C)"
        .Font.Bold = True
        .NumberFormat = "( #,##0)"
    End With
       
End Sub
Em cám ơn A/C nhiều!

xem lại cái dòng này coi nó nghĩa là gì này.

PHP:
n = Range("C65000").End(xlUp).Row
chúc thành công
xem thêm thuộc tính End
http://www.giaiphapexcel.com/forum/showthread.php?12903-Thu%E1%BB%99c-t%C3%ADnh-End%28%29-trong-Excel-gi%E1%BB%9Bi-thi%E1%BB%87u-t%E1%BB%95ng-quan.
 
Upvote 0
Upvote 0
Mình chỉ hiểu là nó sẽ trả kết quả vào ô cuối cùng cột C thôi. khoavu tư vấn thêm nhé!?
bây giờ nhé, ban đầu bạn dùng công thức =SUBTOTAL(9,C5:C12) = 31500000.
giờ bạn xóa kết quả đó đi thử chạy đoạn code của bạn xem, coi đúng kết quả ko/
- nếu mục đích của bạn khác thì nói rõ ra .
bạn có thể đọc kỹ cái topic mình gửi đó, rất hay đó bạn đọc hiểu liền.
 
Upvote 0
bây giờ nhé, ban đầu bạn dùng công thức =SUBTOTAL(9,C5:C12) = 31500000.
giờ bạn xóa kết quả đó đi thử chạy đoạn code của bạn xem, coi đúng kết quả ko/
- nếu mục đích của bạn khác thì nói rõ ra .
bạn có thể đọc kỹ cái topic mình gửi đó, rất hay đó bạn đọc hiểu liền.

Nếu mình chọn nút Tính tổng lần 1 thì cho kết kết đúng rồi. Nhưng sao mình chọn lần nữa thì nó lại tra kết kết nữa phía dưới dòng kết quả đó (tổng gtrị kết kết ô trên trừ đi giá trị lần lượt giá trị bảng tính)? Mình muốn là nó chỉ hiện 1 kết quả đúng ở ô cuối cùng thôi.
 
Upvote 0
A/C xem dùm em code này sai ở chổ nào nhé!?

Code của bạn sai ở chỗ bạn chọn ô cuối tại cột C (vì sau mỗi lần chạy code, ô cuối của sẽ là ô dưới dòng tổng)

Bạn thử code này xem (tôi không hiểu tại sao bạn lại định dạng tổng là số âm)
PHP:
Sub Macro1()
Set tmp = [b5:b65000].SpecialCells(2)
[b65000].End(3)(2, 2) = Application.Subtotal(9, [c5].Resize(tmp.Rows.Count))
With [c65000].End(3)
    .Font.Bold = True
    .NumberFormat = "#,##0 "
End With
End Sub
 
Upvote 0
Gởi Khoa:
Tác giả hỏi tại sao kết quả âm, không hỏi gì đến n và end cả. Đi thi đọc đề kiểu này, và kiểu lần trước, rớt chắc luôn. (Muốn quỳ gai mít không?)

Gởi NH_DK:
Kết quả vẫn là số dương, chỉ bị định dạng có 2 cái dấu ngoặc (bằng code) mà thôi. Đinh dạng number lại sẽ thấy dương hay âm.
Sửa dòng định dạng số lại theo code của anh Trung Chinh là xong.

Gợi ý:

- Nếu không biết trước dữ liệu đến dòng nào, mới dùng End().Row. Mà đã không biết trước bao nhiêu dòng thì không được ấn định R[-8]
- Nếu không muốn nhấn nút lần sau cộng trùng subtotal của lần trước, thì xoá kết quả lần trước đi, hoặc ghi đè lên.

Code gợi ý cách ghi đè:

PHP:
Sub Macro1()
Dim n As Long
n = Range("A65000").End(xlUp).Row
    With Range("C" & n + 1)
        .FormulaR1C1 = "=SUBTOTAL(9,R5C:R[-1]C)"
        .Font.Bold = True
        .NumberFormat = "#,##0"
    End With
       
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Gởi Khoa:
Tác giả hỏi tại sao kết quả âm, không hỏi gì đến n và end cả. Đi thi đọc đề kiểu này, và kiểu lần trước, rớt chắc luôn. (Muốn quỳ gai mít không?)
bác ơi em quỳ suốt roài, lần này cũng quỳ , nhưng hơi thắc mắc chút là tác giả ko hỏi vì sao kết quả âm thì phải. mong bác chỉ giáo thêm. cảm ơn bác .
pm/ em đi làm chưa đủ xiền thay bàn phím mong bác và mọi người thông cảm nhé toàn chữ thường thui.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Upvote 0
Gởi NH_DK:
Kết quả vẫn là số dương, chỉ bị định dạng có 2 cái dấu ngoặc (bằng code) mà thôi. Đinh dạng number lại sẽ thấy dương hay âm.
Sửa dòng định dạng số lại theo code của anh Trung Chinh là xong.
Gợi ý:

- Nếu không biết trước dữ liệu đến dòng nào, mới dùng End().Row. Mà đã không biết trước bao nhiêu dòng thì không được ấn định R[-8]
- Nếu không muốn nhấn nút lần sau cộng trùng subtotal của lần trước, thì xoá kết quả lần trước đi, hoặc ghi đè lên.

Đoạn code của anh chạy rất ngon lành rồi. Em hỏi thêm một chút nữa nhé!?
Giả sử: Em xoá bớt 2 dòng đi và em muốn ô cộng tổng cũng nhảy theo (nằm dưới cùng vùng cộng tổng đó).
Anh viết thêm dùm em đoạn code xoá đó nhé!?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Em cứ thử xoá vài dòng xem? Sau đó em thử thêm dòng xem. Nhớ là cột STT không được bỏ trống. Code này không có bị ấn định số dòng như code cũ đâu.
 
Upvote 0
Web KT

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

Back
Top Bottom