Đổi hàm thành code (1 người xem)

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

hungdiep85

Thành viên thường trực
Tham gia
1/6/09
Bài viết
218
Được thích
23
Giới tính
Nam
Chào các Thầy và Anh Chị :

Em đã tính ra được số điểm cần lấy, nhưng giờ khổ ở chổ là nếu dữ liệu em mà tăng lên nhiều thì cái file sẽ rất nặng nặng lắm luôn.
Mong các Thầy và Anh Chị giúp em với, em con bước này nữa thôi là hòan thành được cái file rồi. Huhu...


Cột B là cột Tính Điểm, (=IF(J2<=L2,DI2,IF(J2>=DH2,HE2,SUM(HF2:LB2))))
Cột C là cột Tổng Doanh Thu, (Dữ Liệu)
Cột D là cột Chia Tổng Doanh Thu, (=G2/C2*1000)
Cột E là cột Chia Cột D, (=D2/2)
Cột F là cột Chia Cột E, (=E2/50)
Cột G là cột Doanh Thu Của Nhân Viên, (Dữ Liệu)
Cột H là cột Phần trăm Yêu cầu, (Dữ Liệu)
Cột I là cột Phần trăm Đạt Đươc, (=J2*1)
Cột J là cột Phần trăm Đạt Đươc, (Dữ Liệu)

Phần cần đổi :
-----------------------------------------------
Phần 01:
Cột BJ (=IF(H2="","",H2)), Là Cột trung tâm
Cột BI (=IF(BJ2="","",BJ2-0.05)) Cứ mổi cột -0.05 cho đến cột L
Cột BK (=IF(BJ2="","",BJ2+0.05)) Cứ mổi cột +0.05 cho đến cột DH
-----------------------------------------------
Phần 02:
Cột FG (=IF(C2="","",E2+F2)), Là Cột trung tâm
Cột FF (IF(FG2="","",FG2-$F2)), Cứ mổi cột -F2 cho đến cột DI
Cột FH (IF(FG2="","",FG2+$F2)), Cứ mổi cột +F2 cho đến cột HE
-----------------------------------------------
Phần 03:
Cột JD (=IF(AND($I2>=BJ2,$I2<BK2),FG2,"")), Là Cột trung tâm
Cột JC (=IF(AND($I2>=BI2,$I2<BJ2),FF2,"")), cho đến cột HF
Cột JE (=IF(AND($I2>=BK2,$I2<BL2),FH2,"")), cho đến cột LA
Cột JB (=IF(AND($I2>=DH2),HE2,""))
-----------------------------------------------

Em cảm ơn trước ah.....
 

File đính kèm

Chào các Thầy và Anh Chị :

Em đã tính ra được số điểm cần lấy, nhưng giờ khổ ở chổ là nếu dữ liệu em mà tăng lên nhiều thì cái file sẽ rất nặng nặng lắm luôn.
Mong các Thầy và Anh Chị giúp em với, em con bước này nữa thôi là hòan thành được cái file rồi. Huhu...

.................................

Em cảm ơn trước ah.....
Theo kinh nghiệm của tôi thì mấy cái vụ chuyển hàm thành code này, tôi sẽ nhờ anh chàng Record Macro (R.M) làm giúp. Cứ bật R.M lên, gõ công thức, hết công thức này đến công thức khác. Xong xuôi thì tắt R.M đi, tôi sẽ có một rừng lệnh liên quan đến những công thức đã gõ. Tiếp theo là đến công đoạn tinh gọn code, cái nào không cần thiết thì xóa đi, công thức nào áp dụng cho cả một vùng thì đưa địa chỉ cả vùng đó vào trước chỗ .FormulaR1C1, chẳng hạn lúc lập công thức thì lập cho ô BJ2, nhưng công thức lại muốn áp dụng cho cả vùng BJ2:BJ100 thì tôi sẽ sửa lại câu lệnh thành [BJ2:BJ100].FormulaR1C1=... Bước cuối cùng là thêm một câu lệnh để chuyển toàn bộ kết quả tính toán thành giá trị nữa là xong. Câu lệnh phục vụ việc này có dạng [A2:JZ100].Value=[A2:J100].Value

Bạn cứ thử chịu khó làm như vậy đi, sửa vài lần tự nhiên thấy mình có kinh nghiệm thôi mà.
 
Upvote 0
Theo kinh nghiệm của tôi thì mấy cái vụ chuyển hàm thành code này, tôi sẽ nhờ anh chàng Record Macro (R.M) làm giúp. Cứ bật R.M lên, gõ công thức, hết công thức này đến công thức khác. Xong xuôi thì tắt R.M đi, tôi sẽ có một rừng lệnh liên quan đến những công thức đã gõ. Tiếp theo là đến công đoạn tinh gọn code, cái nào không cần thiết thì xóa đi, công thức nào áp dụng cho cả một vùng thì đưa địa chỉ cả vùng đó vào trước chỗ .FormulaR1C1, chẳng hạn lúc lập công thức thì lập cho ô BJ2, nhưng công thức lại muốn áp dụng cho cả vùng BJ2:BJ100 thì tôi sẽ sửa lại câu lệnh thành [BJ2:BJ100].FormulaR1C1=... Bước cuối cùng là thêm một câu lệnh để chuyển toàn bộ kết quả tính toán thành giá trị nữa là xong. Câu lệnh phục vụ việc này có dạng [A2:JZ100].Value=[A2:J100].Value

Bạn cứ thử chịu khó làm như vậy đi, sửa vài lần tự nhiên thấy mình có kinh nghiệm thôi mà.



Dạ Thầy ơi :
Nếu Phần 01 & Phần 02 & Phần 03 làm thành code luôn được không Thầy, vì nếu làm vậy cái file cũng sẽ rất nặng khi dữ liệu lên đến nhiều ngàn vòng.
 
Upvote 0
Chào các Thầy và Anh Chị :

Em đã tính ra được số điểm cần lấy, nhưng giờ khổ ở chổ là nếu dữ liệu em mà tăng lên nhiều thì cái file sẽ rất nặng nặng lắm luôn.
Mong các Thầy và Anh Chị giúp em với, em con bước này nữa thôi là hòan thành được cái file rồi. Huhu...


Cột B là cột Tính Điểm, (=IF(J2<=L2,DI2,IF(J2>=DH2,HE2,SUM(HF2:LB2))))
Cột C là cột Tổng Doanh Thu, (Dữ Liệu)
Cột D là cột Chia Tổng Doanh Thu, (=G2/C2*1000)
Cột E là cột Chia Cột D, (=D2/2)
Cột F là cột Chia Cột E, (=E2/50)
Cột G là cột Doanh Thu Của Nhân Viên, (Dữ Liệu)
Cột H là cột Phần trăm Yêu cầu, (Dữ Liệu)
Cột I là cột Phần trăm Đạt Đươc, (=J2*1)
Cột J là cột Phần trăm Đạt Đươc, (Dữ Liệu)

Phần cần đổi :
-----------------------------------------------
Phần 01:
Cột BJ (=IF(H2="","",H2)), Là Cột trung tâm
Cột BI (=IF(BJ2="","",BJ2-0.05)) Cứ mổi cột -0.05 cho đến cột L
Cột BK (=IF(BJ2="","",BJ2+0.05)) Cứ mổi cột +0.05 cho đến cột DH
-----------------------------------------------
Phần 02:
Cột FG (=IF(C2="","",E2+F2)), Là Cột trung tâm
Cột FF (IF(FG2="","",FG2-$F2)), Cứ mổi cột -F2 cho đến cột DI
Cột FH (IF(FG2="","",FG2+$F2)), Cứ mổi cột +F2 cho đến cột HE
-----------------------------------------------
Phần 03:
Cột JD (=IF(AND($I2>=BJ2,$I2<BK2),FG2,"")), Là Cột trung tâm
Cột JC (=IF(AND($I2>=BI2,$I2<BJ2),FF2,"")), cho đến cột HF
Cột JE (=IF(AND($I2>=BK2,$I2<BL2),FH2,"")), cho đến cột LA
Cột JB (=IF(AND($I2>=DH2),HE2,""))
-----------------------------------------------

Em cảm ơn trước ah.....
Bạn thử file xem được không nhé ! công thức tại dòng 2 là của bạn, mình chỉ chuyển giúp sang VBA thôi .
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các Thầy và Anh Chị :

Em đã tính ra được số điểm cần lấy, nhưng giờ khổ ở chổ là nếu dữ liệu em mà tăng lên nhiều thì cái file sẽ rất nặng nặng lắm luôn.
Mong các Thầy và Anh Chị giúp em với, em con bước này nữa thôi là hòan thành được cái file rồi. Huhu...


Cột B là cột Tính Điểm, (=IF(J2<=L2,DI2,IF(J2>=DH2,HE2,SUM(HF2:LB2))))
Cột C là cột Tổng Doanh Thu, (Dữ Liệu)
Cột D là cột Chia Tổng Doanh Thu, (=G2/C2*1000)
Cột E là cột Chia Cột D, (=D2/2)
Cột F là cột Chia Cột E, (=E2/50)
Cột G là cột Doanh Thu Của Nhân Viên, (Dữ Liệu)
Cột H là cột Phần trăm Yêu cầu, (Dữ Liệu)
Cột I là cột Phần trăm Đạt Đươc, (=J2*1)
Cột J là cột Phần trăm Đạt Đươc, (Dữ Liệu)

Phần cần đổi :
-----------------------------------------------
Phần 01:
Cột BJ (=IF(H2="","",H2)), Là Cột trung tâm
Cột BI (=IF(BJ2="","",BJ2-0.05)) Cứ mổi cột -0.05 cho đến cột L
Cột BK (=IF(BJ2="","",BJ2+0.05)) Cứ mổi cột +0.05 cho đến cột DH
-----------------------------------------------
Phần 02:
Cột FG (=IF(C2="","",E2+F2)), Là Cột trung tâm
Cột FF (IF(FG2="","",FG2-$F2)), Cứ mổi cột -F2 cho đến cột DI
Cột FH (IF(FG2="","",FG2+$F2)), Cứ mổi cột +F2 cho đến cột HE
-----------------------------------------------
Phần 03:
Cột JD (=IF(AND($I2>=BJ2,$I2<BK2),FG2,"")), Là Cột trung tâm
Cột JC (=IF(AND($I2>=BI2,$I2<BJ2),FF2,"")), cho đến cột HF
Cột JE (=IF(AND($I2>=BK2,$I2<BL2),FH2,"")), cho đến cột LA
Cột JB (=IF(AND($I2>=DH2),HE2,""))
-----------------------------------------------

Em cảm ơn trước ah.....

Có lẽ cái file của bạn không "cồng kềnh" đến thế. Vậy mục đích bạn tính điểm là như thế nào từ dữ liệu gốc của bạn? Mình nghĩ nếu được như vậy sẽ giúp cho các Thầy và các Anh Chị giúp bạn dễ dàng hơn.

Thân!
 
Upvote 0
Em cảm ơn Thầy Ngoai Thanh và Thầy ads_ads..


Chào các Thầy và Anh Chị:
Em đã sửa chút công thức cho file nó gọn lại thêm chút rồi. hihi.....
Từ(Sheet Mẫu) là tính cột xuống, em đổi qua tính hàng, bên sheet (Tính điểm)
Ý em muốn là dùng VBA đê thay thế cột(H:KX) bên sheet (Tính điểm). nếu được thì cái file sẽ nhẹ đi rất nhiều vì không có công thức, khi nào cần tính điểm thì mình chạy VBA. Khi bình thường thì không chạy.
Em cảm ơn các Thầy và Anh Chị trước àh...

Ví dụ(Sheet Mẫu) : Công Ty yêu cầu là 2.5%
-------------------------------------
Thang điểm (Mỗi số 1 ô)
(-50 cho đến -1) = (Sheet Mẫu C1:C50)
(0) = (Sheet Mẫu C51)
(+1 cho đến +50) = (Sheet Mẫu C52:C101)

*ô C51 (0) : Phần trăm mà Công Ty yêu cầu sẽ nằm ở ô mức (0)=(D51)(Ví dụ : 2.5%,3.5%..vv)
*(-50 cho đến -1) : Từ ô số 1 (D50) trừ dần 0.05% cho mỗi ô bắt đầu từ (D51)(Mức 0)=(D1:D50)
*(+1 cho đến +50) : Từ ô số 1 (D52) cộng dần 0.05% cho mỗi ô bắt đầu từ (D51)(Mức 0)=(D52:D101)
-------------------------------------
Cột E là cột tính điểm :
*A: Tổng Danh Thu Của Nhân Viên (chia) Tổng Danh Thu Của Công Ty (chia) 2 (Nhân) 1000. (J51/I51/2*1000=0.820)
*B: Tổng Danh Thu Của Nhân Viên (chia) Tổng Danh Thu Của Công Ty (chia) 100 (Nhân) 1000. (J51/I51/100*1000=0.016)
*Cột (E51) : Cộng A và B lại.(J51/I51/2*1000+J51/I51/100*1000=0.836)
*Cột (E50) : Từ ô số 1 (E50) trừ dần (*B:J51/I51/100*1000=0.016) cho mỗi ô bắt đầu từ (E51).(E51-$J$51/$I$51/100*1000=0.820)
*Cột (E52) : Từ ô số 1 (E52) cộng dần (*B:J51/I51/100*1000=0.016) cho mỗi ô bắt đầu từ (E51.(E51+$J$51/$I$51/100*1000=0.853)
-------------------------------------
Cột F là cột tìm ra(Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) nằm ổ thang điểm nào :
*Cột (F51) : Nếu phần trăm lợi nhuận của nhân viên bằng hoạt lớn hơn (D51) và nhỏ hơn(D52) thì sẽ cho giá trị bằng ô (E51). Copy công thức (F51) dán vào (F1:F100=IF(AND($L$51>=D51,$L$51<D52),E51,0)).
Còn(F101=IF(AND($L$51>=D101),E101,0))
-------------------------------------
Cột (H51) : Nếu (Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) nhỏ hơn (-50 (D1)) thì sẽ cho giá trị bằng ô (E1) và nếu (Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) lớn hơn (+50 (D101)) thì sẽ cho giá trị bằng ô (E101), bằng không thì sẽ tìm ra thang điểm nào đúng với phần trăm của nhân viên đó đạt được.



Em xin cảm ơn...
 

File đính kèm

Upvote 0
Em cảm ơn Thầy Ngoai Thanh và Thầy ads_ads..


Chào các Thầy và Anh Chị:
Em đã sửa chút công thức cho file nó gọn lại thêm chút rồi. hihi.....
Từ(Sheet Mẫu) là tính cột xuống, em đổi qua tính hàng, bên sheet (Tính điểm)
Ý em muốn là dùng VBA đê thay thế cột(H:KX) bên sheet (Tính điểm). nếu được thì cái file sẽ nhẹ đi rất nhiều vì không có công thức, khi nào cần tính điểm thì mình chạy VBA. Khi bình thường thì không chạy.
Em cảm ơn các Thầy và Anh Chị trước àh...

Ví dụ(Sheet Mẫu) : Công Ty yêu cầu là 2.5%
-------------------------------------
Thang điểm (Mỗi số 1 ô)
(-50 cho đến -1) = (Sheet Mẫu C1:C50)
(0) = (Sheet Mẫu C51)
(+1 cho đến +50) = (Sheet Mẫu C52:C101)

*ô C51 (0) : Phần trăm mà Công Ty yêu cầu sẽ nằm ở ô mức (0)=(D51)(Ví dụ : 2.5%,3.5%..vv)
*(-50 cho đến -1) : Từ ô số 1 (D50) trừ dần 0.05% cho mỗi ô bắt đầu từ (D51)(Mức 0)=(D1:D50)
*(+1 cho đến +50) : Từ ô số 1 (D52) cộng dần 0.05% cho mỗi ô bắt đầu từ (D51)(Mức 0)=(D52:D101)
-------------------------------------
Cột E là cột tính điểm :
*A: Tổng Danh Thu Của Nhân Viên (chia) Tổng Danh Thu Của Công Ty (chia) 2 (Nhân) 1000. (J51/I51/2*1000=0.820)
*B: Tổng Danh Thu Của Nhân Viên (chia) Tổng Danh Thu Của Công Ty (chia) 100 (Nhân) 1000. (J51/I51/100*1000=0.016)
*Cột (E51) : Cộng A và B lại.(J51/I51/2*1000+J51/I51/100*1000=0.836)
*Cột (E50) : Từ ô số 1 (E50) trừ dần (*B:J51/I51/100*1000=0.016) cho mỗi ô bắt đầu từ (E51).(E51-$J$51/$I$51/100*1000=0.820)
*Cột (E52) : Từ ô số 1 (E52) cộng dần (*B:J51/I51/100*1000=0.016) cho mỗi ô bắt đầu từ (E51.(E51+$J$51/$I$51/100*1000=0.853)
-------------------------------------
Cột F là cột tìm ra(Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) nằm ổ thang điểm nào :
*Cột (F51) : Nếu phần trăm lợi nhuận của nhân viên bằng hoạt lớn hơn (D51) và nhỏ hơn(D52) thì sẽ cho giá trị bằng ô (E51). Copy công thức (F51) dán vào (F1:F100=IF(AND($L$51>=D51,$L$51<D52),E51,0)).
Còn(F101=IF(AND($L$51>=D101),E101,0))
-------------------------------------
Cột (H51) : Nếu (Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) nhỏ hơn (-50 (D1)) thì sẽ cho giá trị bằng ô (E1) và nếu (Phần Trăm Lợi Nhuận Của Nhân Viên Đạt Được) lớn hơn (+50 (D101)) thì sẽ cho giá trị bằng ô (E101), bằng không thì sẽ tìm ra thang điểm nào đúng với phần trăm của nhân viên đó đạt được.



Em xin cảm ơn...
trời ạ ! mình học còn chả xong "thày bà " gì . bạn xem file xem được chưa .
 

File đính kèm

Upvote 0
trời ạ ! mình học còn chả xong "thày bà " gì . bạn xem file xem được chưa .

Dạ Thầy ơi, có thể làm không cần cột(H:KX) mà vẫn tính được không Thầy, vì nếu vẫn dùng cột(H:KX) thì file sẽ rất nặng khi dữ liệu tăng lên nhiều ngàn vòng. Em cảm ơn àh...
 
Upvote 0
Dạ Thầy ơi, có thể làm không cần cột(H:KX) mà vẫn tính được không Thầy, vì nếu vẫn dùng cột(H:KX) thì file sẽ rất nặng khi dữ liệu tăng lên nhiều ngàn vòng. Em cảm ơn àh...
Vậy thì bạn đừng có đưa công thức lên làm gì . Với dữ liệu như vậy, bạn cần cái gì? thế nào ? tính cái gì ? ví dụ cụ thể yêu cầu ...và bạn đừng gọi thày nữa , các cây đại thụ của GPE chả dám là thày nữa là loại lau nhau như mình .
 
Upvote 0
Vậy thì bạn đừng có đưa công thức lên làm gì . Với dữ liệu như vậy, bạn cần cái gì? thế nào ? tính cái gì ? ví dụ cụ thể yêu cầu ...và bạn đừng gọi thày nữa , các cây đại thụ của GPE chả dám là thày nữa là loại lau nhau như mình .


Dạ Anh Ngoai Thanh ơi ,
Ý em muốn là có thể tính ra số điểm như công thức trên. Chỉ hiện thị đúng 1 ô kết quả là Số điểm thôi, còn lại công thức từ cột(H:KX) tất cả bằng VBA hết. không biết vậy có được không nữa.

Anh đừng giận em nha. Em cảm ơn Anh nhiều lắm
 
Upvote 0
Dạ Anh Ngoai Thanh ơi ,
Ý em muốn là có thể tính ra số điểm như công thức trên. Chỉ hiện thị đúng 1 ô kết quả là Số điểm thôi, còn lại công thức từ cột(H:KX) tất cả bằng VBA hết. không biết vậy có được không nữa.

Anh đừng giận em nha. Em cảm ơn Anh nhiều lắm
Thì tất cả mình chuyển sang giá trị hết rồi, còn công thức đâu nữa . Chỉ còn duy nhất dòng 2 . file có 82 K sao nặng ? Bạn thử nhập dữ liệu đi đã xem thực tế sao rồi tính sau .
 
Upvote 0
Thì tất cả mình chuyển sang giá trị hết rồi, còn công thức đâu nữa . Chỉ còn duy nhất dòng 2 . file có 82 K sao nặng ? Bạn thử nhập dữ liệu đi đã xem thực tế sao rồi tính sau .


Dạ Anh Ngoai Thanh ơi ,
Em có đính kèm 2 file,
File (MAU 03) là để nguyên cột(H:KX). File nặng 11336KB,
File (MAU 04) là không có dữ liệu gì ở cột(H:KX) nặng 98KB,
1 tuần dữ liệu được nhập vào cở 10000 hàng.
Anh coi có cách nào giúp em với.
Em cảm ơn anh nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ Anh Ngoai Thanh ơi ,
Em có đính kèm 2 file,
File (MAU 03) là để nguyên cột(H:KX). File nặng 11336KB,
File (MAU 04) là không có dữ liệu gì ở cột(H:KX) nặng 98KB,
1 tuần dữ liệu được nhập vào cở 10000 hàng.
Anh coi có cách nào giúp em với.
Em cảm ơn anh nhiều.
Công thức mình kém lắm, chờ các bạn khác giỏi về hàm giúp bạn nhé !
 
Upvote 0
Dạ Anh Ngoai Thanh ơi ,
Em có đính kèm 2 file,
File (MAU 03) là để nguyên cột(H:KX). File nặng 11336KB,
File (MAU 04) là không có dữ liệu gì ở cột(H:KX) nặng 98KB,
1 tuần dữ liệu được nhập vào cở 10000 hàng.
Anh coi có cách nào giúp em với.
Em cảm ơn anh nhiều.[/QUOTA]
Mấy ngày liền mình loay hoay với file của bạn . Cuối cùng cũng giải quyết cho bạn đỡ buồn và thuận lợi hơn trong công việc . Tại sheet "mau", nhập ký tự bất kỳ vào G50 rồi xóa G51 đi, sang sheet "tinh diem" xóa dữ liệu tại cột B để chạy lại từ đầu . Tại sheet"mau" xóa G50 nếu có rồi Enter ( bắt đầu chay code ) mỗi lần enter ( hoặc mũi tên xuống ) code chạy một lần . Cột G sheet "tinh diem" là mình copy dữ liệu đã tính của bạn để tiện cho việc so sánh .
 

File đính kèm

Upvote 0
Dạ Anh Ngoai Thanh ơi ,
Em có đính kèm 2 file,
File (MAU 03) là để nguyên cột(H:KX). File nặng 11336KB,
File (MAU 04) là không có dữ liệu gì ở cột(H:KX) nặng 98KB,
1 tuần dữ liệu được nhập vào cở 10000 hàng.
Anh coi có cách nào giúp em với.
Em cảm ơn anh nhiều.[/QUOTA]
Mấy ngày liền mình loay hoay với file của bạn . Cuối cùng cũng giải quyết cho bạn đỡ buồn và thuận lợi hơn trong công việc . Tại sheet "mau", nhập ký tự bất kỳ vào G50 rồi xóa G51 đi, sang sheet "tinh diem" xóa dữ liệu tại cột B để chạy lại từ đầu . Tại sheet"mau" xóa G50 nếu có rồi Enter ( bắt đầu chay code ) mỗi lần enter ( hoặc mũi tên xuống ) code chạy một lần . Cột G sheet "tinh diem" là mình copy dữ liệu đã tính của bạn để tiện cho việc so sánh .

Em cảm ơn anh nhiều lắm
 
Upvote 0

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

Back
Top Bottom