Gán công thức cho ô trong Excel tự động bằng VBA (2 người xem)

Liên hệ QC

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

haicoi311

Thành viên mới
Tham gia
13/6/11
Bài viết
8
Được thích
0
Em có một bảng tính mẫu như file đính kèm (mặc định không có dòng tô đỏ),
em muốn dùng VBA để tự động điền công thức cho các ô trong hàng đỏ đó
(vì với mỗi file thì cấu trúc bảng không cố định (số hàng và số cột của phần Lượng thép yêu cầu thay đổi))
mỗi lúc làm việc với mỗi file thì em phải tự điền công thức SUM và SUMPRODUCT để có số liệu mình cần.

Do vậy, ý tưởng của em là VBA tự động tìm ô có giá trị "CD Thanh" để tự động xác định ra phạm vi của ô để điền cho em hàng màu công thức (màu đỏ), tuy nhiên em không xoay xở thế nào để có thể làm cho VBA gán công thức của một ô theo kiểu có biến thay đổi được (địa chỉ ô).

Cũng đã tham khảo nên diễn đàn mà tìm chưa ra, nên viết bài nhờ các tiền bối chỉ giáo (em là dân không chuyên).
 

File đính kèm

Em có một bảng tính mẫu như file đính kèm (mặc định không có dòng tô đỏ),
em muốn dùng VBA để tự động điền công thức cho các ô trong hàng đỏ đó
(vì với mỗi file thì cấu trúc bảng không cố định (số hàng và số cột của phần Lượng thép yêu cầu thay đổi))
mỗi lúc làm việc với mỗi file thì em phải tự điền công thức SUM và SUMPRODUCT để có số liệu mình cần.

Do vậy, ý tưởng của em là VBA tự động tìm ô có giá trị "CD Thanh" để tự động xác định ra phạm vi của ô để điền cho em hàng màu công thức (màu đỏ), tuy nhiên em không xoay xở thế nào để có thể làm cho VBA gán công thức của một ô theo kiểu có biến thay đổi được (địa chỉ ô).

Cũng đã tham khảo nên diễn đàn mà tìm chưa ra, nên viết bài nhờ các tiền bối chỉ giáo (em là dân không chuyên).
Chức năng Table có sẵn trong Excel đã làm được yêu cầu này rồi, không cần phải công thức hay code nào cả
Cứ điền sẵn công thức theo ý bạn ở dòng Total row, xong cho ẩn Total row đi (bằng cách bỏ check mục Total row trong tab Table Tools). Giờ cứ nhập liệu đến đâu tùy ý, khi nào cần hiện dòng Total row thì lại check mục Total Row trong Table Tools là xong (công thức nhập lúc trước sẽ tự động cập nhập đúng y chang với vùng dữ liệu mới)
 
Upvote 0
Của mình ko phải mỗi sum. Mà cả sumproduct nữa (trong ví dụ của mình chỉ có mỗi một cột là dùng sum thôi
minhf nghi vba phải xử lý đc vấn đế này chứ?
 
Upvote 0
Của mình ko phải mỗi sum. Mà cả sumproduct nữa (trong ví dụ của mình chỉ có mỗi một cột là dùng sum thôi
minhf nghi vba phải xử lý đc vấn đế này chứ?

Vậy bạn đã nghiên cứu Table chưa? Total Row đâu phải chỉ có SUM, bất cứ công thức nào cũng được nha


Capture.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
oh. em cũng chưa thử hết.
nhưng nếu làm theo hướng như bác nói thì dùng macro như thế nào để cứ khi vào file em chạy macro đó là nó tự động cho em luôn?
vì các file này có cấu trúc giống nhau, nhưng số hàng và số cột thì khác nhau?
 
Upvote 0
oh. em cũng chưa thử hết.
nhưng nếu làm theo hướng như bác nói thì dùng macro như thế nào để cứ khi vào file em chạy macro đó là nó tự động cho em luôn?
vì các file này có cấu trúc giống nhau, nhưng số hàng và số cột thì khác nhau?

Sau khi có Table và thiết lập công thức cho Total Row rồi, việc còn lại chỉ là ẩn hoặc hiện Total Row thôi, đúng không? Bạn có thể record macro để biết code viết ra sao
Tôi record macro nó ra vầy:
Mã:
Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveSheet.ListObjects("Table1").ShowTotals = [COLOR=#ff0000]True[/COLOR]

End Sub
Chỗ màu đỏ = True là hiện Total Row và = False sẽ ẩn Total Row
Hoặc muốn ẩn hiện luân phiên nhau thì sửa code thành:
Mã:
Sub Macro1()

    ActiveSheet.ListObjects("Table1").ShowTotals = Not ActiveSheet.ListObjects("Table1").ShowTotals
End Sub
Vẽ 1 cái nút bấm tùy ý, gán (Assign Macro) cho nó cái code trên rồi bấm chạy code
 
Upvote 0
Web KT

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

Back
Top Bottom