Chuyển công thức thành vba trong excel (4 người xem)

Liên hệ QC

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

hoahongden142917

Thành viên hoạt động
Tham gia
28/5/13
Bài viết
180
Được thích
20
[TIP][/TIP]Trước tiên xin chào các anh em trong diễn đàn, chúc mọi người thành công và sức khoẻ.
Em có một file dùng công thức quá nhiều nên file bị chậm. GIờ xin nhờ anh em giúp tôi dùng vba để thay cho các công thức trong này . Xin cảm ơn.
DIỄN GIẢI:
1/ Đây là file chuyên dùng để tổng hợp thi đua của cán bộ trong đơn vị.
2/ sheet TD là thang điểm thi đua do cán bộ thống nhất lập ra. Đặc điểm của sheet này: có thể sửa chữa hoặc thêm nôi dung bất kỳ lúc nào.
3/ sheet CD3F dùng ctrl+Ship+f để tự cập nhật 3 ngày nghỉ đầu tiên từ các sheet họ DB.
4/ sheet họ DB dùng để nhập các diễn biến xảy ra trong từng tháng.
5/ SHeet họ Sk dùng để sơ kết điểm thông qua sheet họ DB.
Vậy hàng tháng em phải dán sheet họ DB và SK tương ứng của tháng đó lên cho CB xem.
* Lí do chuyển sang vba:
a/ file quá nặng chạy chậm.
b/ sheet CD3F chạy vô cùng chậm và khi nhập chữ CĐ 3 NGÀY PHÉP vào cột GHI CHÚ của họ DB thì điểm nó vẫn cộng ở họ SK.
Ý của em là: nếu em nhập chữ CĐ 3 NGÀY PHÉP cho người nào thì người đó không bị trừ điểm. nếu không nhập thì sẽ tính điểm bình thường. em sẽ gởi 2 file lên cho các bác xem để so sánh
- file chuyensangvba (là nhờ các bác chuyển sang vba) còn file DB là file cũ. để các bác so sánh giữa cột I và J.
 

File đính kèm

Bổ sung thêm file db

Bổ sung thêm file db
 

File đính kèm

Điều đầu tiên là file bạn có virus (38/54 chương trình trên VIRUSTOTAL.COM fát hiện ra; Thật tiếc là BKAB của ta thì 1 trong số không fát hiện ra)
Bạn cần diệt chúng/ nó đi đã!
 
Điều đầu tiên là file bạn có virus (38/54 chương trình trên VIRUSTOTAL.COM fát hiện ra; Thật tiếc là BKAB của ta thì 1 trong số không fát hiện ra)
Bạn cần diệt chúng/ nó đi đã!

Hổng có virus đâu sư phụ à! File chỉ có name rác thôi
 
Mấy cha này nó thống kê nè:

,,,,,,, ,,,,,,, ,,,,,,,

Virus.JPG
 
Mấy cha này nó thống kê nè:
Nhận nhầm thôi, cũng giống như BKAV từng xem file chứa macro là file có virus ấy mà
Em bảo đảm với sư phụ là file này chỉ có name rác. Có thể là name rác dùng hàm macro 4 nên mấy cha đó cho là virus
 
xin cảm ơn các bác đã quan tâm

Nhận nhầm thôi, cũng giống như BKAV từng xem file chứa macro là file có virus ấy mà
Em bảo đảm với sư phụ là file này chỉ có name rác. Có thể là name rác dùng hàm macro 4 nên mấy cha đó cho là virus

xin cảm ơn các bác. em cứ sợ không ai ghé thăm chủ đề này
em đảm bảo là file này k có virus vì em sử dụng win7 bản quyền và phần mềm quét virus bản quyền của mircrosoft. xin các bác giúp em chuyển qua đuwjowjc không ạ.
 
vả lại em muốn file của em áp dụng cho được nhiều người khoảng 160 người. nếu không chuyển sang vba thì nó sẽ nặng lắm đây. n hờ các bác giúp cho
 
đã chỉnh sửa lại

em đã quét namebằng pm quet name mà em gởi bên dưới đó và có chỉnh sửa lại một số cái:
1/ các đề mục ở họ sk chỉ ở một hàng không còn là gộp 2 hàng như lúc trước.
3/ bỏ cột VẮNG O ở họ sk và điều chỉnh lại công thức ở cột KHÔNG VẮNG TRONG SKCN để nó k phụ thuộc vào sheet CD3F như trước nữa.
4/ em đã thêm tới 160 người. vậy nhờ các bác giúp em
mong sớm nhận được tin
 

File đính kèm

xin lỗi anh em nhé. giờ em quét file lại lần nữa thì nó mới xóa hết các name rác. em quét lần trước cũng đợi khoảng 15p mà ai je hồi nãy quét lại nó mới thực sự xóa hết các name rác đó chứ. giờ gởi file này lên lại cho các bác. xin các bác đừng phiền, thông cảm cho em nhé. thực sự xin lỗi. mong sớm nhận được tin từ các bác. không biết có khả quan không nhưng nhìn thấy số lần tải file của anh em, em thực sự rất hồi hộp. không biết có chuyển sang vba được không nữa.. chứ file của em nó nặng quá. mỗi lần nhập dữ liệu là nó phải xử lí một hồi mới ra kết quả. thật chán quá.
Rất mong nhận được tin từ các bác. Mỗi ngày có khi em vào đây để chờ kết quả của các bác có khi 10 lần lận ấy hihi
 

File đính kèm

xin lỗi anh em nhé. giờ em quét file lại lần nữa thì nó mới xóa hết các name rác. em quét lần trước cũng đợi khoảng 15p mà ai je hồi nãy quét lại nó mới thực sự xóa hết các name rác đó chứ. giờ gởi file này lên lại cho các bác. xin các bác đừng phiền, thông cảm cho em nhé. thực sự xin lỗi. mong sớm nhận được tin từ các bác. không biết có khả quan không nhưng nhìn thấy số lần tải file của anh em, em thực sự rất hồi hộp. không biết có chuyển sang vba được không nữa.. chứ file của em nó nặng quá. mỗi lần nhập dữ liệu là nó phải xử lí một hồi mới ra kết quả. thật chán quá.
Rất mong nhận được tin từ các bác. Mỗi ngày có khi em vào đây để chờ kết quả của các bác có khi 10 lần lận ấy hihi
Bạn xem lại file đính kèm và yêu cầu, giải thích của bạn xem sao.
Ít nhất bạn cũng phải nói rõ nhờ làm cho sheet nào, sheet đó lấy dữ liệu từ sheet nào, theo điều kiện nào, sheet nào cần giúp, sheet nào không cần ...
Ví dụ: đầu tiên xem sheet "CD3F", chẳng biết mấy dữ liệu trong các cột ngày 1, ngày 2... từ đâu mà có, ngày tháng trong đó ở đâu?
ChetLuon.jpg
Các sheet DB.. thì có cột mã, các sheet SK.. thì chỉ có tên không xài mã, vậy có chắc ăn là tất cả các sheet đều nhập tên giống nhau không, sai sót chỉ 1 dấu cách thì sao?
Theo tôi, bài này bạn nên nhờ viết VBA từ sheet một, có hệ thống cái nào làm trước, cái nào làm sau nhờ vào dữ liệu đã làm trước... chứ như thế này thì "khó mà giúp" khi bạn hiểu và muốn làm 1 kiểu, người khác chưa chắc hiểu và muốn làm như bạn.
 
Theo quy định: 1 người được nghỉ tối đa 3 lần trong một năm học (từ tháng 8 đến tháng 5) vì thế người này sẽ không bị trừ điểm ở 3 lần ngỉ đầu tiên. Sheet CD3F nó dùng macro ctrl+f để lọc ra 3 lần nghỉ đầu tiên của một người trong các họ DB (với điều kiện ở họ DB mình nhập cho người này chữ CĐ 3 PHÉP). Nhưng bây giờ em đang tính bỏ sheet này
 
Theo quy định: 1 người được nghỉ tối đa 3 lần trong một năm học (từ tháng 8 đến tháng 5) vì thế người này sẽ không bị trừ điểm ở 3 lần ngỉ đầu tiên. Sheet CD3F nó dùng macro ctrl+f để lọc ra 3 lần nghỉ đầu tiên của một người trong các họ DB (với điều kiện ở họ DB mình nhập cho người này chữ CĐ 3 PHÉP). CD3F dựa trên Mã GV , Nhưng bây giờ em đang tính bỏ sheet này
1/ Ý em là: hàng tháng mọi người sẽ có những cái vi phạm và những cái thành tích cá nhân -> mình phải ghi nhận lại những cái này vào họ DB (mà nội dung gì và số điểm tương ứng là do sheet TD qui định). Xong rồi các sheet họ SK sẽ tổng hợp điểm từ họ DB. số điểm mà họ SK hiện ra dựa vào cột F ở họ DB.
 

File đính kèm

Dạ, dĩ nhiên là chuyển sang vba từ sheet DB01, rồi từ đó mìn phát triển lên DB02...DB10, rồi tới sheet SK01...tới SKCN. có nghĩa là file của em quá nặng, em muốn chuyển sang vba cho nó nhẹ ấy mà.
 
Dạ, dĩ nhiên là chuyển sang vba từ sheet DB01, rồi từ đó mìn phát triển lên DB02...DB10, rồi tới sheet SK01...tới SKCN. có nghĩa là file của em quá nặng, em muốn chuyển sang vba cho nó nhẹ ấy mà.
Chuyển sang VBA thì phải xài tất bằng VBA, cột thì công thức, cột thì VBA cũng chẳng "đẹp" tí nào.
Bạn phải xác định lại, trong các sheet, cột nào là nhập thủ công, cột nào cần VBA lấy dữ liệu?
Tạm thời tôi viết code cho sheet "CD3F", danh sách mã, tên lấy từ sheet "DS", 3 ngày nghỉ đầu tiên lấy từ các sheet DBxx, thêm 1 cột ghi tổng số lần đã nghỉ trên cột H.
Nếu thống nhất kiểu làm từ từ thì bạn phải có dữ liệu mẫu tương đối đầy đủ một chút (giả lập thôi), chứ chỉ có 1 người nghỉ trong tất cả các sheet (Đỗ Thành Trơn), cùng 1 ngày nghỉ, chẳng có ghi chú mục nào ngoại trừ "vắng K" thì làm sao mà làm tiếp.
Vậy nhé!
 

File đính kèm

sao em tải về rồi nhập diễn biến vào họ DB rồi cho chạy sheet cd3f mà k được ạ anh.
Sheet nhập thủ công là: cột b,c d ở họ DB. và sheet TD và sheet DS. còn lại là excel tự tính
 
trước tin xin cảm ơn bác Ba Tê đã giúp em.
Nhưng file của bác nó bị chỗ này: cái em cần ở sheet cd3f là nó sẽ tìm người nào có chữ CD3F - khi mình nhập vào cột I ở các họ DB. còn của anh thì khi em đánh ngày vào cột thời gian thì nó lập tức cập nhật ở cd3f liền. vậy thì k đúng
 
Function Tich (KyHieu As String, Dai As Double, Rong As Double, Cao As Double) As Double
If KyHieu = "A" Then
Tich = Dai * Rong * 2
ElseIf KyHieu = "B" Then
Tich = Dai * Rong
Else
Tich = 0
End If
End Function

-Mình muốn trong ô kết quả có hiện ghi chú (comment) là Dai*Rong*2 hoặc Dai*Rong tùy theo KyHieu.
-Hoặc thêm một ô hiện Dai*Rong*2 (VD: =B3*C3*2) hoặc Dai*Rong (VD: B3*C3) tùy theo KyHieu.
Mong các bạn giúp đỡ. Xin cám ơn trước.
 
Web KT

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

Back
Top Bottom