nhờ các bạn thu gọn code cho mình với.mình làm thủ công quá.

Liên hệ QC

khoavu87

Vũ Trần Khoa
Tham gia
5/3/09
Bài viết
1,311
Được thích
1,769
Nghề nghiệp
Kỹ Sư Xây dựng cầu đường
mình đã gửi kiểu bài này lên diễn đàn rồi và đã được các bác giúp đỡ nhiệt tình bây giờ mình viết code cho bài toán đó nhưng thấy mình làm thủ công quá nên muốn nhờ mọi người xem file và rút gọn code cho mình với xin cảm ơn.
 
Gợi ý:1.
PHP:
ElseIf x >= 5000 Then
   a = (235 - 224) * (x - 224) / (7000 - 5000) + 224
ElseIf x >= 2000 Then
   a = (224 - 207) * (x - 207) / (5000 - 2000) + 207
ElseIf x >= 1000 Then
   a = (207 - 192) * (x - 192) / (2000 - 1000) + 192
ElseIf x >= 500 Then
   a = (192 - 178) * (x - 178) / (1000 - 500) + 178
ElseIf x >= 200 Then
   a = (178 - 160) * (x - 160) / (500 - 200) + 160
ElseIf x >= 100 Then
   a = (160 - 147) * (x - 147) / (200 - 100) + 147
ElseIf x >= 50 Then
   a = (147 - 133) * (x - 133) / (-50 + 100) + 133

Lẽ ra phải là:

Mã:
ElseIf x >= 5000 Then
   a = (235 - 224) * (x - [COLOR="Red"]5000[/COLOR]) / (7000 - 5000) + 224
ElseIf x >= 2000 Then
   a = (224 - 207) * (x - [COLOR="Red"]2000[/COLOR]) / (5000 - 2000) + 207
ElseIf x >= 1000 Then
   a = (207 - 192) * (x - [COLOR="Red"]1000[/COLOR]) / (2000 - 1000) + 192
ElseIf x >= 500 Then
   a = (192 - 178) * (x - [COLOR="Red"]500[/COLOR]) / (1000 - 500) + 178
ElseIf x >= 200 Then
   a = (178 - 160) * (x - [COLOR="Red"]200[/COLOR]) / (500 - 200) + 160
ElseIf x >= 100 Then
   a = (160 - 147) * (x - [COLOR="Red"]100[/COLOR]) / (200 - 100) + 147
ElseIf x >= 50 Then
   a = (147 - 133) * (x - [COLOR="Red"]50[/COLOR]) / (-50 + 100) + 133

Thử thay ô H13 bằng các số chẵn 100, 200, 500, 1000, ... thì thấy ngay.

2. Còn nữa, các tham số đưa vào, coi như bị chết: đưa vào bao nhiêu chết cứng tại số đó. Nếu có gì thay đổi thì phải sửa code. Còn cai bảng dữ liêu trên sheet thì không có tác dụng gì, xóa đi cũng không sao.
Thay vì vậy nếu các tham số lấy từ từng ô trên sheet thì có thể thay đổi giá trị khi cần ngay trên sheet.

3. Nên tạo code thành 1 function thay vì Sub (trong trường hợp này).
 
Lần chỉnh sửa cuối:
Upvote 0
Em biết là cái bảng trong sheet không có td nhưng em đưa vào để mọi người dễ hình dung.
tại vì em không biết cách lập kết nối giữa cái lựa chọn combox với function nên em mới chọn cách thủ công này anh àh.Nếu anh có tg có thể hướng dẫn em bằng cách cụ thể hơn đc ko?chảng hạn khi lập đc một function rồi thì kết nối với combox thế nào? để khi lựa chọn mặt đường a---> ra đc 1 kq và chọn mặt đường....--> tạo ra kq .cảm ơn anh đã nhiệt tình giúp đỡ.
 
Upvote 0
Xem file là 1 thí dụ chuyển Sub thành Function. Thực tình mà nói, cả sub, cả function, làm ra chỉ để xài cho 1 ô thì quá phí. Mà giả sử số liệu của bảng tra thay đổi, lại phải vào code mà sửa.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
bác ơi sao mà bác giỏi vây?

bây giờ em muốn theo hpcj lớp VBA trong ex quá bác có biết ai dạy học không cho em địc chỉ được không ạ.?
không biết thời là sv bác đã giỏi thế này chưa nhỉ?em muốn biết để cố gắng hơn ạ.em cũng muốn cố gắng học tốt nhưng mà em chưa dc nhiều tg để học vì số lượng bài giảng trên lớp nhiểu quá.
 
Upvote 0
M góp ý chút. M nghĩ là trong bài này cần làm tự đông lên một chút.ví dụ khi thay đổi số liệu trong comboxbox thì có kêt quả tự nội suy. Ko nên dùng công thức hoặc xuất hiên trên màn hình sau đó mới tính. Bạn nên chèn thêm một đoạn code nữa. Như vậy giao diện sẽ đẹp hơn.

Good luck!
 
Upvote 0
thế sao?bạn làm ví dụ cho mình xem thế nào?
 
Upvote 0
Gởi Haituan,
Bạn cho biết thế nào là User defined Function (hàm tự tạo)?
Theo tôi, hàm tự tạo là 1 hàm do người dùng viết và có chức năng tính toán như mọi hàm có sẵn của excel. Đứng ở bất kỳ ô nào của bảng tính cũng có thể gõ công thức trong đó có sử dụng hàm tự tạo. Thí dụ đứng bất kỳ đâu, gõ công thức:

= noisuy(D16, H13)

hoặc = noisuy(bất kỳ tham chiếu nào chứa Loại và Ntt).

hoặc có thể tính toán bằng kết quả của hàm thí dụ:
= noisuy(D16, H13)*5

hoặc có thể dùng hàm kết hợp với các hàm khác thí dụ:
= noisuy(vlookup(...), hlookup(...))

hoặc:
= If(noisuy(D16, H13)<200, "chưa đạt", "đạt")

Và: Hàm có thể sử dụng cho nhiều ô (xem file thí dụ)

Nếu cất công viết 1 hàm rốt cuộc chỉ tính sẵn cho 1 ô cố định, thì cũng chỉ như 1 sub thông thường. Phí lại càng phí.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom