Công thức trong VBA

  • Thread starter Thread starter Thien
  • Ngày gửi Ngày gửi
Liên hệ QC

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Chào cả nhà!.

Mình muốn dùng VBA trong trường hợp sau:
- Khi bất kỳ dòng nào trong cột F chứa số 156 ỏ 152 thì cột M có giá trị của công thức: =IF(AND(F54=156,J54<>""),VLOOKUP($J54,TongHopNX!$B$6:$E$52,4,0),0)
(cột J là mã hàng).
- Nếu khác 156 và 152 thì cột M có giá trị là 0.
- Tránh việc tính toán được lập lại từ dòng đầu đến dòng hiện tại, mình muốn chỉ khi dòng nào trong cột f có số liệu (156 ỏ 152) thì tính toán dòng đó thôi.

Mong các bạn trợ giúp.

Cảm ơn nhiều.

Thân chào
 
Để giá trị M = Q thì đơn giản
Nhưng sao M phải bằng Q. Tính M luôn trong VBA không được sao ???
 
Upvote 0
Bạn xem qua nhé.
Nhưng quả thực mình thấy công thức ở File của bạn quá nhiều và toàn là công thức dạng "Đại ca " thôi.

Nhớ tối ưu lại đi.
Thân!
 

File đính kèm

Upvote 0
He He He.
Cảm ơn Mr Okebab nhiều lắm. Đúng ý mình rùi.
Cảm ơn các bạn đã quan tâm.
Thân chào.

PS: Công thức mình thấy sài cũng được mà, chỉ có điều giá xuất mình chưa dùng được hàm sumproduct để tính giá vốn bình quân liên hoàn (khó quá).
 
Upvote 0
undefinedBuồn buồn buồn.

Bác Mr Okebab này. chẳng hiểu sao khi nhập dữ liệu từ dòng 100 trở đi thì chạy rất lâu, rùi trơ ra luôn, chẳng có số liệu gì cả (từ 100 về trước thì có bình thường).

Làm sao đây??????

Thân chào
 
Upvote 0
Công thức quá nhiều mà. Mới có 100 dòng mà đã vậy thì đến 10.000 chắc chết luôn.
Xem lại cái dòng bên dưới trong code. Đấy là công thức tính trong VBA luôn.
Mà sao thấy các công thức của cậu (nhất là công thức tính chứng từ tiếp theo) khủng hoảng luôn. Tối ưu lại đi chứ.

Thân!
 
Upvote 0
Thân chào anh Mr Okebab và các bạn.
Mình có cách này tuy không hay lắm nhưng đở đau đầu vỉết code:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Range("F6:F1000"), Target) Is Nothing Then
Sheets("NhatKyNX").Range("R6:R1000").Value = Range("Q6:Q1000").Value
End If

Ở cột M cho công thức =IF(AND(F45=156,J45<>""),R45,0)

Như vậy là ổn.

Cảm ơn các bạn đã quan tâm
 
Upvote 0
Web KT

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

Back
Top Bottom