Hàm Tự Tạo Không Tự Tính (1 người xem)

Liên hệ QC

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

hoangexcell

Thành viên tiêu biểu
Tham gia
8/1/08
Bài viết
459
Được thích
132
Donate (Momo)
Donate
Giới tính
Nam
Xin Chào,

Tôi có viết một hàm tự tạo để tính toán nhưng sao khi thay đổi số liệu thì nó không tự động tính lại?

Cần nhập lại hàm thì nó mới tính ra giá trị cập nhật.

Chế độ calculation là auto nhe! Hàm có sẵn của excel dĩ nhiên sẽ tự động rồi không có gì bất thường

Xin cám ơn!
 
Bạn có thể cho cộng đồng biết nội hàm là gì không vậy?
 
Upvote 0
Bạn có thể sửa lại nội dung của hàm bằng 1 xử lý đơn giản nào đó nếu muốn "ẩn". Chạy thử vẫn còn lỗi thì gửi file đó lên
 
Upvote 0
Bạn có thể cho cộng đồng biết nội hàm là gì không vậy?

Tất nhiên ạ, tại vì nghĩ đơn giản nên không post lên. Bây giờ đưa file lên nha

À, mình hiểu ra phần nào. Vì trong hàm mình dùng for... next i để tính toán, có lẽ thế :)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tất nhiên ạ, tại vì nghĩ đơn giản nên không post lên. Bây giờ đưa file lên nha
Hàm tự tạo gì mà có .Row, .Column tùm lum cả vậy trời ---> Xong 1 tí nhức đầu luôn
Hay là bạn mô tả sơ qua bạn muốn tính cái gì trong file ---> Biết đâu tôi có cách viết khác
 
Upvote 0
Ah... hình như tôi hơi... hiểu hiểu
Sửa code của bạn thành vầy xem:
PHP:
Public Function Giocong(ByVal NV As Long, ByVal dDat As Range, ByVal dVal As Range, ByVal sn As Long, ByVal ts As Boolean) As Long
  Dim i As Long, tong As Long
  On Error Resume Next
  For i = 1 To dDat.Count
    If ts Then
      If dDat(i) <= sn + NV Then tong = dVal(i) + tong
    Else
      If dDat(i) > sn + NV Then tong = dVal(i) + tong
    End If
  Next
  Giocong = tong
End Function
Áp dụng
- Cell K4 gõ công thức: =Giocong($D4, $E$3:$I$3, $E4:$I4, 2, 1)
- Cell L4 gõ công thức: =Giocong($D4, $E$3:$I$3, $E4:$I4, 2, 0)
- Sửa dữ liệu, kiểm tra xem hàm có cập nhật không
 
Upvote 0
Hàm tự tạo gì mà có .Row, .Column tùm lum cả vậy trời ---> Xong 1 tí nhức đầu luôn
Hay là bạn mô tả sơ qua bạn muốn tính cái gì trong file ---> Biết đâu tôi có cách viết khác

||||| tại vì mình không có học hành gì hết mò mò làm thôi. Ý là muốn tính tổng các con số trong dãy đó với điều kiện đưa ra đó.

Nếu cần sẽ mô tả chi tiết... nhưng mà thiết nghĩ nó sao lại liên quan tới nội dung nhỉ? Khi mình đặt hàm, thay đổi dữ liệu nó phải chạy lại chứ ta?
mấy hàm của Bill Gates thì chạy bình thường! :)
 
Upvote 0
nhưng mà thiết nghĩ nó sao lại liên quan tới nội dung nhỉ? Khi mình đặt hàm, thay đổi dữ liệu nó phải chạy lại chứ ta?
mấy hàm của Bill Gates thì chạy bình thường! :)
Tòm lại là hàm của bạn viết chẳng hợp lý tí nào nên nó mới ra vậy
--------------------------------------------------------------------

Nhân đây đố chơi cho vui
Với đoạn:
PHP:
If ts Then
  If dDat(i) <= sn + NV Then tong = dVal(i) + tong
Else
  If dDat(i) > sn + NV Then tong = dVal(i) + tong
End If
Code có 3 IF... Đố các bạn làm cách nào rút gọn lại chỉ còn 1 IF (rút gọn phải hợp lý chứ không phải "cố ép")
Ẹc... Ẹc...
 
Upvote 0
Bỏ qua nội dung tính toán, hàm vẫn chưa tự động tính lại! Xin cám ơn...
Tôi đã kiểm tra chắc rồi mới đưa lên... sao mà không tự tính lại chứ
Xem file
Các bạn khác vui lòng kiểm tra giúp (thay đổi dữ liệu, kiểm tra kết quả)
 

File đính kèm

Upvote 0
Đồng ý! nhưng vấn đề làm sao nó không tự tính lại như các hàm của excel? viết thêm cái gì nó mới tính lại?!

Đó là vấn đề chính mình thắc mắc.
Tôi không chắc lắm về những gì tôi suy đoán nên không dám phát biểu bậy bạ... chỉ biết rằng: Nếu chúng ta viết 1 hàm làm việc với CSDL thì phải "bám sát" vào cơ sở dữ liệu ấy cứ không nên đi lòng vòng
Ở đây thay vì chỉ rõ sẽ lấy dữ liệu tại đâu (range nào đó) bạn lại đi lòng vòng thông qua column với row ---> Vừa thiếu hiệu quả lại khó hiểu
Riêng về phần cập nhật tôi cũng từng gặp vấn đề tương tự... Trong trường hợp này, muốn cấp nhật, cứ cho dòng Application.Volatile lên đầu code là được...
 
Upvote 0
Tôi đã kiểm tra chắc rồi mới đưa lên... sao mà không tự tính lại chứ
Xem file
Các bạn khác vui lòng kiểm tra giúp (thay đổi dữ liệu, kiểm tra kết quả)

OKie dùng file của anh thì okie rồi, tại lúc nãy copy code bỏ qua thay thế mà không được!!
Nhưng vẫn không hiểu tại sao mà nó không tự tính theo cách viết của mình . Thế mới còn buồn
**~**
 
Upvote 0
Tôi không chắc lắm về những gì tôi suy đoán nên không dám phát biểu bậy bạ... chỉ biết rằng: Nếu chúng ta viết 1 hàm làm việc với CSDL thì phải "bám sát" vào cơ sở dữ liệu ấy cứ không nên đi lòng vòng
Ở đây thay vì chỉ rõ sẽ lấy dữ liệu tại đâu (range nào đó) bạn lại đi lòng vòng thông qua column với row ---> Vừa thiếu hiệu quả lại khó hiểu
Riêng về phần cập nhật tôi cũng từng gặp vấn đề tương tự... Trong trường hợp này, muốn cấp nhật, cứ cho dòng Application.Volatile lên đầu code là được...

Cái này do mình chưa có học VBA, chỉ mò mò ngang thôi nên không rành :).

Còn cái Application.Volatile đã thêm vào thử thấy có tính tự động rồi . Vậy là sài thôi chứ cũng đâu tìm hiểu nó có nghĩa gì đâu? lần sau có ai hỏi giống mình, là mình chỉ liền:).
Cảm ơn nhiều !
}}}}}
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom