Công thức dòng trong excel

Liên hệ QC

minhchauc92

Thành viên mới
Tham gia
18/8/08
Bài viết
19
Được thích
1
Các bạn à, mình xem mà không hiểu, mình gửi file đính kèm lên, các bạn xem và cgỉ cho mính nhé.
 

File đính kèm

  • Book1.xls
    19 KB · Đọc: 68
Lần sau bạn nên đưa đoạn code vào giữa hai khoản [php ].....code của bạn......[/php ]. Bên dưới đây là đoạn code bạn thắc mắc:
PHP:
Option Explicit

Public Sub AddFooterX()
Application.ScreenUpdating = False
Dim myPage As HPageBreak, iP As Integer, iRb As Integer, iRe As Integer, nRbt As Integer, iReE As Integer
Dim nP As Integer

SOKT.Range("A13").Select
SOKT.Cells.RemoveSubtotal

iRb = TEMP.Range("DongBatDau").Value
iReE = TEMP.Range("DongCuoiCung").Value + 1
nRbt = TEMP.Range("CONGHETTRANG").Rows.Count

nP = SOKT.HPageBreaks.Count
SOKT.Range("A" & iReE).Value = 1
SOKT.Range("A" & iReE + 1 & ":A" & (iReE + nP * nRbt)).Formula = "=R[-1]C+1"

nP = SOKT.HPageBreaks.Count
SOKT.Range("A" & iReE & ":A" & (iReE + nP * nRbt)).ClearContents

iP = 0
With SOKT

For iP = 1 To nP + 1
    If iP <= nP Then
        iRe = SOKT.HPageBreaks(iP).Location.Row - nRbt + 1
        TEMP.Range("CONGHETTRANG").Copy
    Else
        iRe = nP * nRbt + TEMP.Range("DongCuoiCung").Value + 1
        TEMP.Range("CongTrangCuoi").Copy
    End If
    Rows(iRe).Insert xlShiftDown, True
    .Range("F" & iRe).Formula = "=SUBTOTAL(9,F" & iRb & ":F" & (iRe - 1) & ")"
    .Range("G" & iRe).Formula = "=SUBTOTAL(9,G" & iRb & ":G" & (iRe - 1) & ")"
    
    .Range("F" & iRe + 1).Formula = "=SUBTOTAL(9,F" & TEMP.Range("DongBatDau").Value & ":F" & (iRe - 1) & ")"
    .Range("G" & iRe + 1).Formula = "=SUBTOTAL(9,G" & TEMP.Range("DongBatDau").Value & ":G" & (iRe - 1) & ")"
    If iP <= nP Then
        .Range("F" & (iRe + nRbt - 1)).Formula = .Range("F" & (iRe + 1)).Formula
        .Range("G" & (iRe + nRbt - 1)).Formula = .Range("G" & (iRe + 1)).Formula
    Else
        .Range("F" & iRe + 2).Formula = "=F" & TEMP.Range("DongBatDau").Value - 1 & "+F" & (iRe + 1) _
                                            & "-G" & TEMP.Range("DongBatDau").Value - 1 & "-G" & (iRe + 1)
        If .Range("F" & iRe + 2).Value < 0 Then
            .Range("G" & iRe + 2).Formula = "=-F" & TEMP.Range("DongBatDau").Value - 1 & "-F" & (iRe + 1) _
                                            & "+G" & TEMP.Range("DongBatDau").Value - 1 & "+G" & (iRe + 1)
            .Range("F" & iRe + 2).ClearContents
        End If
    
    End If
    iRb = iRe + nRbt
Next iP
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub 

Theo mình nhận xét, đây là đoạn code để in ra được tổng của cột F và cột G theo từng trang
Các tham số như:
Range("CONGHETTRANG")
Range("DongCuoiCung")
Range("CongTrangCuoi")
Range("DongBatDau")
Bạn có thể vào thẳng file Excel có chứa đoạn code này, sau đó vào /Menu/Insert/Name/Define sẽ nhận biết ngay.

Riêng các tham số:
Range("F" & iRe)
Range("G" & iRe)
Vì ta chưa biết chính xác vị trí cuối trang in của từng trang ở đâu nên đoạn code trên sử dụng biến iRe để xác định. Do đó, giả sử bạn xác định được sẽ đặt số tổng cộng tại trang in đầu tiên tại ô F15, thì bạn viết là: Range("F15"), nhưng do không xác định được, và ô này phụ thuộc vào biến iRe nên bạn phải viết Range("F" & iRe)

Tương tự như vậy với việc gán công thức Subtotal cho các ô xác định bằng biến iRe.
 
Lần chỉnh sửa cuối:
Cho mình hỏi với mình đang tham khảo bài viết của Ban, mình thấy công thức này rất hay, mình đã từng sử dụng add-ins, sao minh tạo file ghi đuôi xla theo đoạn code bạn cho rồi đưa vào add-ins nhưng khi vào insert/funtion/user -defined lại không thấy công thức đâu, bạn chỉ giúp cho mình với (mình đã từng tạo và sử dụng hàm đổi tiền từ số thành chữ)
 
Cho mình hỏi với mình đang tham khảo bài viết của Ban, mình thấy công thức này rất hay, mình đã từng sử dụng add-ins, sao minh tạo file ghi đuôi xla theo đoạn code bạn cho rồi đưa vào add-ins nhưng khi vào insert/funtion/user -defined lại không thấy công thức đâu, bạn chỉ giúp cho mình với (mình đã từng tạo và sử dụng hàm đổi tiền từ số thành chữ)

Chào bạn,
Bạn có thể nói rõ bạn đang gặp phải vấn đề trong công thức nào, ở bài nào, add-Ins gì không? Bạn không trích dẫn nên thực sự mình không hiểu ý của bạn. Còn như trong bài này, đây là một thủ tục (sub) chứ không phải là một Hàm tự tạo (UDF).
 
cám ơn bạn, mình nắm không sấu kiến thức về excel, mới vào diễn đàn học được cách lập công thức tự tạo, chắc mình nhầm, cho mình hỏi bạn nói đây là một thủ tục (sub), không phải là hàm tự tạo, bạn có thể chỉ giúp mình sub tác dụng và cách sử dụng ntn? cám ơn bạn nhiều.
 
Hàm tự tạo là dạng công thức như Sum hay IF vậy! Còn SUB là 1 Macro là 1 quy trình sử lý 1 dữ liệu nào đó và được lưu lại để sau này bạn thực hiện chuổi việc làm đó trở lại!
Sub là 1 Macro chứ không phải hàm đâu bạn! Nó không thể tự gọi ra như công thức được! Mà bạn phải gọi nó ở Macro (tức là bạn nhấn Alt + F8 -> chọn tên thủ tục rồi nhấn RUN).
Muốn tạo 1 mới 1 SUB hay mình thường gọi là Macro đó thì bạn vào Tools -> Macro -> New Macro -> rồi bạn đặt tên cho thủ tục đó -> OK.
Rồi bạn thực hiện 1 việc hoặc 1 chuổi việc làm nào đó -> Xong bấm nút Stop. Và muốn xem code của nó ntn thì nhấn Alt + F11, bạn sẽ thấy nó nằm trong 1 cặp Sub ten() ... End Sub.
Hàm tự tạo thì nằm trong cặp Function ten(<Chuổi biến>) ... End Function.
 
cám ơn bạn, mình nắm không sấu kiến thức về excel, mới vào diễn đàn học được cách lập công thức tự tạo, chắc mình nhầm, cho mình hỏi bạn nói đây là một thủ tục (sub), không phải là hàm tự tạo, bạn có thể chỉ giúp mình sub tác dụng và cách sử dụng ntn? cám ơn bạn nhiều.

SUB:
Thông thường ta dùng SUB để xử lý một sự kiện (application) nào đó. Đó có thể là một tiến trình, chuỗi tiến trình thực hiện tự động theo một mục đích cho trước.
Ví dụ: Khi có sự kiện Click nút, thì chạy Thủ tục này, Khi có sự kiện Double click vào Listbox thì thực hiện thủ tục kia.


FUNCTION:
Thông thường ta sử dụng Function để thực hiện việc xử lý một loạt các phép tính và thủ tục con để cho ra một kết quả nào đó và nó thể hiện bằng một công thức.

Ví dụ = MYSUM(12,13,14)
Như vậy, tại một ô nào đó, ta gõ =MySum(12,13,14), giá trị của ô đó được trả về là 39.
Như vậy, MySum(Value) là một Hàm.


Mình cũng không có kiến thức sâu về lập trình lắm, chỉ học lóm của các anh chị trên GPE thôi. Chính vì thế, những dòng giải thích có lẽ rườm rà, có lẽ bạn chưa hiểu. Các anh chị GPE sẽ giúp bạn nhiều hơn.

Thân.
 
Ok, mình đã hiểu phần nào, cám ơn bạn nhiều.
 
Các bạn à, mình xem mà không hiểu, mình gửi file đính kèm lên, các bạn xem và cgỉ cho mính nhé.
Bài này ở chuyên đề: Giải Pháp Excel > Dành cho thành viên mới tham gia > Hỏi đáp về VBA - Macro Tạo dòng "Tổng cộng cuối trang"
Địa chỉ đường dẫn:http://www.giaiphapexcel.com/forum/showthread.php?t=820&page=5

Đây là đoạn mã rất hay của bạn TigerTiger . Bạn hãy vào trang này tham khảo nhé!
 
Web KT
Back
Top Bottom