Ếch Xanh
Thành viên tích cực
- Tham gia
- 12/8/09
- Bài viết
- 865
- Được thích
- 1,572
Topic này tôi mở ra mục đích là tập hợp những hàm tự tạo hay của diễn đàn, để về sau nếu ai có khả năng tổng hợp thành Addins toàn tập thì dễ dàng lấy nguồn tại đây.
Tôi cũng hy vọng, các thành viên nào có những hàm hay hoặc thấy những hàm hay trên diễn đàn Giải pháp Excel hoặc diễn đàn khác, xin vui lòng post lên đây, và vui lòng trích nguồn từ link nào để tiện theo dõi.
Bài viết này, với tôi trình độ còn yếu kém, cho nên cách đặt tên hàm cũng như cách sử dụng hàm cũng chưa chính xác, vậy xin các thành viên bổ sung, góp ý, phản biện để các hàm của chúng ta trở nên mạnh hơn, hiệu quả hơn, chất lượng hơn, nhanh hơn đặc biệt chính xác hơn.
THAM KHẢO THÊM: Mỗi ngày một hàm VBA tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?31-Mỗi-tuần-một-hàm-VBA&
Dưới đây là mở đầu một vài hàm:
1) Hàm Thay đổi kích thước mảng 2 chiều (ptm0412)
Nguồn: http://www.giaiphapexcel.com/forum/...về-mảng-trong-VBA-(Array)&p=309679#post309679
-------------------------------------------------------------------------------
2) Hàm SORT mảng 1 chiều: (ndu96081631)
Nguồn: http://www.giaiphapexcel.com/forum/...về-mảng-trong-VBA-(Array)&p=320811#post320811
-------------------------------------------------------------------------------
3) Hàm tính diện tích tam giác (ndu96081631)
Nguồn: http://www.giaiphapexcel.com/forum/...khi-biết-toạ-độ-trên-exel&p=319887#post319887
CÒN TIẾP, SẼ BỔ SUNG SAU...
Tôi cũng hy vọng, các thành viên nào có những hàm hay hoặc thấy những hàm hay trên diễn đàn Giải pháp Excel hoặc diễn đàn khác, xin vui lòng post lên đây, và vui lòng trích nguồn từ link nào để tiện theo dõi.
Bài viết này, với tôi trình độ còn yếu kém, cho nên cách đặt tên hàm cũng như cách sử dụng hàm cũng chưa chính xác, vậy xin các thành viên bổ sung, góp ý, phản biện để các hàm của chúng ta trở nên mạnh hơn, hiệu quả hơn, chất lượng hơn, nhanh hơn đặc biệt chính xác hơn.
THAM KHẢO THÊM: Mỗi ngày một hàm VBA tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?31-Mỗi-tuần-một-hàm-VBA&
Dưới đây là mở đầu một vài hàm:
1) Hàm Thay đổi kích thước mảng 2 chiều (ptm0412)
PHP:
Function resizeArr(ByVal SourceArr, ByVal NewC As Long)
Dim OldR As Long, OldC As Long, NewR As Long, iR As Long, iC As Long
Dim ArrKQ, iKQ, jKQ, SArr
SArr = SourceArr
iKQ = 1: jKQ = 1
OldR = UBound(SArr, 1)
OldC = UBound(SArr, 2)
NewR = Int(OldR * OldC / NewC)
If (OldR * OldC) Mod NewC > 0 Then NewR = NewR + 1
ReDim ArrKQ(1 To NewR, 1 To NewC)
For iC = 1 To OldC
For iR = 1 To OldR
ArrKQ(iKQ, jKQ) = SArr(iR, iC)
iKQ = iKQ + 1
If iKQ > NewR Then iKQ = 1: jKQ = jKQ + 1
Next
Next
resizeArr = ArrKQ
End Function
Nguồn: http://www.giaiphapexcel.com/forum/...về-mảng-trong-VBA-(Array)&p=309679#post309679
-------------------------------------------------------------------------------
2) Hàm SORT mảng 1 chiều: (ndu96081631)
PHP:
Function Sort1DArray(ByVal Arr, Optional ByVal isText As Boolean = False, Optional ByVal isDESC As Boolean = False)
Dim sCommand As String
sCommand = "('" & Join(Arr, vbBack) & "').split('" & vbBack & "').sort("
If isText Then
sCommand = sCommand & ")"
Else
sCommand = sCommand & "function(a,b){return (a-b)})"
End If
If isDESC Then sCommand = sCommand & ".reverse()"
sCommand = sCommand & ".join('" & vbBack & "')"
With CreateObject("MSScriptControl.ScriptControl")
.Language = "JavaScript"
Sort1DArray = Split(.Eval(sCommand), vbBack)
End With
End Function
Nguồn: http://www.giaiphapexcel.com/forum/...về-mảng-trong-VBA-(Array)&p=320811#post320811
-------------------------------------------------------------------------------
3) Hàm tính diện tích tam giác (ndu96081631)
PHP:
Function TriArea(ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, _
ByVal y1 As Double, ByVal y2 As Double, ByVal y3 As Double) As Double
Dim dA As Double, dB As Double, dC As Double, dP As Double
dA = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) '<--- Chieu dai canh A
dB = Sqr((x3 - x2) ^ 2 + (y3 - y2) ^ 2) '<--- Chieu dai canh B
dC = Sqr((x1 - x3) ^ 2 + (y1 - y3) ^ 2) '<--- Chieu dai canh C
dP = (dA + dB + dC) / 2 '<--- nua chu vi
TriArea = Sqr(dP * (dP - dA) * (dP - dB) * (dP - dC))
End Function
Nguồn: http://www.giaiphapexcel.com/forum/...khi-biết-toạ-độ-trên-exel&p=319887#post319887
CÒN TIẾP, SẼ BỔ SUNG SAU...
Lần chỉnh sửa cuối: