Giúp lập trình hàm tính tổng (1 người xem)

Liên hệ QC

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

phamkienhp

Thành viên mới
Tham gia
24/7/17
Bài viết
5
Được thích
0
Giới tính
Nam
Em muốn viết hàm tính tổng gồm 3 biến với biến thứ nhất là vị trí ô so sánh, biến thứ 2 là vị trí hàng, biến thứ 3 là vị trí cột dạng như thế này: Tong(A1,1,3) nhưng viết toàn báo lỗi mong mọi người giúp đỡ.
 
Tôi đâu có thấy lỗi gì đâu.
 
Upvote 0
Lập bằng VBA mà mong bạn sửa giúp hàm này với:
Function tong(Vt As String, hang As Byte, cot As Byte) As Double
tong = Sum(Range(Vt), Range(cell(hang, cot)))
 
Upvote 0
Lập bằng VBA mà mong bạn sửa giúp hàm này với:
Function tong(Vt As String, hang As Byte, cot As Byte) As Double
tong = Sum(Range(Vt), Range(cell(hang, cot)))
Bạn không thể giỏi hơn Microsoft, vì vậy tên hàm tự đặt phải khác với những hàm có sẳn của Microsoft, nếu không nó sẽ hiểu và lấy theo cú pháp của hàm có sẳn trong hệ thống.
 
Upvote 0
Hàm nó vẫn báo #value! không tính được mong các bác chỉ giáo.
 
Upvote 0
Lập bằng VBA mà mong bạn sửa giúp hàm này với:
Function tong(Vt As String, hang As Byte, cot As Byte) As Double
tong = Sum(Range(Vt), Range(cell(hang, cot)))
Giao của hàng và cột là 1 cell --> chỉ cần 1 biến Cll as range.
Range(Vt as string): Sai phương thức của Range.
Cần lấy giá trị tại Vt thì coi đó là một biến Rng as Range.
Function tong (byval Rng as range, byval Cll as range) as double
tong=Rng.Value + Cll.Value
End Function

Công thức ở bảng tính: = tong(A1, A3)
 
Upvote 0
Giao của hàng và cột là 1 cell --> chỉ cần 1 biến Cll as range.
Range(Vt as string): Sai phương thức của Range.
Cần lấy giá trị tại Vt thì coi đó là một biến Rng as Range.
Function tong (byval Rng as range, byval Cll as range) as double
tong=Rng.Value + Cll.Value
End Function

Công thức ở bảng tính: = tong(A1, A3)
Chỉ lo xa khi biến Rng là một dãy ô thì Tong không thay thế được Sum
 
Upvote 0
Function tong(Vt As String, hang As Byte, cot As Byte) As Double
Ông nội ai hiểu nổi bạn muón chỉ định cái tham string kia là cái gì.
Viết hàm thì chịu khó cho biêts đại khái hàm làm gì và mấy cái tham, trừ phi nó quá rõ rệt, chư bình thường phải nói sơ qua nhiệm vụ của chúng.
Giả sử nó là cái địa chỉ của ô đầu tiên, và bạn muốn cộng tất cả các ô trong khoảng hang hàng và cot cột

tong = Application.Sum(Range(Vt).Resize(hang,cot))

Túm lại, VBA không có hàm Sum. Muốn Sum range thì gọi hàm Sum của Excel bằng cách gán cho nó cái tiền tố Application
 
Upvote 0
Em muốn viết hàm tính tổng gồm 3 biến với biến thứ nhất là vị trí ô so sánh, biến thứ 2 là vị trí hàng, biến thứ 3 là vị trí cột dạng như thế này: Tong(A1,1,3) nhưng viết toàn báo lỗi mong mọi người giúp đỡ.
Thế sao bạn không dùng luôn hàm của anh Bill mà phải tự viết chi cho khổ vậy?
Nếu bạn "tập tành" VBA thì tôi không nói (xem như đó là bài tập). Còn nếu bạn có ý định viết để phục vụ cho công việc thì.. thôi cho qua luôn đi
 
Upvote 0
Thế sao bạn không dùng luôn hàm của anh Bill mà phải tự viết chi cho khổ vậy?
Nếu bạn "tập tành" VBA thì tôi không nói (xem như đó là bài tập). Còn nếu bạn có ý định viết để phục vụ cho công việc thì.. thôi cho qua luôn đi

Có thể bạn ấy muốn cái hang, cot là con số do con toán gì đó tính ra. Và có lẽ bạn ấy không biết dùng hàm Offset trong Excel.
Cũng có thể đây chỉ là một hàm được các Sub, Function khác gọi.

Vì đó chỉ là giả thuyết của tôi cho nên tôi chỉ chú vào điểm cách gọi hàm Sum từ VBA. Nếu chủ thớt nêu rõ mục đích thì có thể tôi đã chỉ cho cách dùng hàm Offset
 
Upvote 0
Cho đến bài này thật sự tôi không biết chủ topic muốn làm cái gì. Vì
Em muốn viết hàm tính tổng gồm 3 biến với biến thứ nhất là vị trí ô so sánh, biến thứ 2 là vị trí hàng, biến thứ 3 là vị trí cột dạng như thế này: Tong(A1,1,3) nhưng viết toàn báo lỗi mong mọi người giúp đỡ.
Nhưng sau đó thì
Lập bằng VBA mà mong bạn sửa giúp hàm này với:
Function tong(Vt As String, hang As Byte, cot As Byte) As Double
tong = Sum(Range(Vt), Range(cell(hang, cot)))
Có người hiểu biến thứ 1 là địa chỉ của ô mà ô đó được cộng vào kết quả cùng với ô có dòng là biến 2 và cột và biến 3:
VBA không có hàm SUM().
Tong = Range(Vt).Value + Cells(hang, cot).Value
Có người hiểu biến là ô đầu tiên của vùng cần tính tổng. Biến 2 và 3 là kích thước của vùng tính tổng
Ông nội ai hiểu nổi bạn muón chỉ định cái tham string kia là cái gì.
Viết hàm thì chịu khó cho biêts đại khái hàm làm gì và mấy cái tham, trừ phi nó quá rõ rệt, chư bình thường phải nói sơ qua nhiệm vụ của chúng.
Giả sử nó là cái địa chỉ của ô đầu tiên, và bạn muốn cộng tất cả các ô trong khoảng hang hàng và cot cột

tong = Application.Sum(Range(Vt).Resize(hang,cot))

Túm lại, VBA không có hàm Sum. Muốn Sum range thì gọi hàm Sum của Excel bằng cách gán cho nó cái tiền tố Application
Tóm lại yêu cầu cụ thể là gì và nếu không có khả năng diễn đạt tốt thì nên có file minh họa.
 
Upvote 0
Tôi thì cho rằng nó lỗi ngay ở cái ý tưởng của bạn:
-Tham biến 1: Bạn cung cấp mẫu so sánh.
-Tham biến 2: Vị trí hàng.
-Tham biến 3: Vị trí cột

Như vậy, tham biến 2 và tham biến 3 chỉ có thể chỉ ra 1 ô trên bảng tính. Mà với 1 ô thì SUM cái gì?
Tham biến 1 bạn cung cấp Mẫu so sánh: Vậy thì bạn so sánh với cái gì? Ở đâu?
Vậy bạn nên tham khảo cái hàm Sumif mà Bác Bill cung cấp ấy sẽ bổ ích cho yêu cầu của bạn.
 
Upvote 0
Thoải mái đi các bạn:
PHP:
Function TTong(GPE As String, Hang As Long, Cot As Integer)
  Dim Rng As Range
  Set Rng = Range(GPE)
  If Not Rng Is Nothing Then
        If Rng.Cells.Count > 1 Then
            TTong = Application.Sum(Rng) + Cells(Hang, Cot).Value
        Else
            TTong = Rng.Value + Cells(Hang, Cot).Value
        End
  Else
        TTong = "Cút Ngay!"
  End If
 End Function
 
Upvote 0
Góp thêm Function
Mã:
Function TongCong(Rng As Variant, iRow As Long, iCol As Integer)
  If TypeName(Rng) = "String" Then Set Rng = Range(Rng)
  TongCong = Application.Sum(Rng) + Cells(iRow, iCol).Value
End Function
 
Upvote 0
Cám ơn cả nhà nhưng em thử chạy mấy hàm này nhưng không được
 
Upvote 0
Web KT

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

Back
Top Bottom