Ðề: Mỗi tuần một hàm trong Excel!
Tôi đã kiểm tra lại rồi link vẫn OK. Tôi up lên cái host thuê của Nhân hòa.Ban Có cách nào khác up lên ổn hơn, tôi sẽ up lại
QUẢNG CÁO ĐẦU TRANG
Collapse
Thông báo
Collapse
No announcement yet.
Mỗi tuần một hàm trong Excel!
Collapse
X
-
Ðề: Mỗi tuần một hàm trong Excel!
Mình có bộ sách hướng dẫn VBA Excel, thấy khá hay, có rất nhiều hàm ví dụ theo sách.Post lên dây mọi người thử xem
Có thể load theo đường dẫn
http://www.v-art.com.vn/vba.zip
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
hềy, các vị này viết sao mà dài thế nhỉ, nhìn đã chả muốn đọc rồi. Hàm của tôi chỉ bằng 1/2 các vị hehehe
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Hàm nội suy của anh DTH HN cũng hay đấy, tôi đã viết hàm nội suy hai chiều này rồi. Theo tôi nên khai báo để giá trị của hàm là Variant. Như vây trong trường hợp nội suy mà tham số dùng để nội suy không nằm trong vùng nội suy thì giá trị trả về có thể là một Text thông báo, như vậy theo tôi người dùng dễ xử lý hơn. Tiện đây tôi gửi hàm nội suy 2 chiều do tôi viết, mong các bạn góp ý:
Public Function Trabang2chieu(ByVal Vungnoisuy As Range, ByVal Thamso1 As Double, ByVal Thamso2 As Double) As Variant
Dim ChisodongMin, ChisodongMax, ChisocotMin, ChisocotMax, Sodong, Socot As Integer
Dim Giatri11, Giatri12, Giatri21, Giatri22 As Double
Dim Giatrinoisuy1, Giatrinoisuy2 As Double
Sodong = Vungnoisuy.Rows.Count
Socot = Vungnoisuy.Columns.Count
'Lấy chỉ số dòng Min và Max
If Vungnoisuy.Cells(2, 1) > Thamso1 Or Vungnoisuy.Cells(Sodong, 1) < Thamso1 Then
Trabang2chieu = "Ha ha, tham số nội suy thứ nhất nằm ngoài vùng nội suy!"
Exit Function
Else
For i = 2 To Sodong
If Vungnoisuy.Cells(i, 1) = Thamso1 Then
ChisodongMin = i
ChisodongMax = i
Exit For
Else
If Vungnoisuy.Cells(i, 1) > Thamso1 Then
ChisodongMin = i - 1
ChisodongMax = i
Exit For
End If
End If
Next
End If
'Lấy chỉ số cột Min và Max
If Vungnoisuy.Cells(1, 2) > Thamso2 Or Vungnoisuy.Cells(1, Socot) < Thamso2 Then
Trabang2chieu = "Ha ha, tham số nội suy thứ hai nằm ngoài vùng nội suy!"
Exit Function
Else
For i = 2 To Socot
If Vungnoisuy.Cells(1, i) = Thamso2 Then
ChisocotMin = i
ChisocotMax = i
Exit For
Else
If Vungnoisuy.Cells(1, i) > Thamso2 Then
ChisocotMin = i - 1
ChisocotMax = i
Exit For
End If
End If
Next
End If
Giatri11 = Vungnoisuy.Cells(ChisodongMin, ChisocotMin)
Giatri12 = Vungnoisuy.Cells(ChisodongMin, ChisocotMax)
Giatri21 = Vungnoisuy.Cells(ChisodongMax, ChisocotMin)
Giatri22 = Vungnoisuy.Cells(ChisodongMax, ChisocotMax)
'Nội suy theo hàng
If ChisodongMin = ChisodongMax Then
Giatrinoisuy1 = Giatri11
Giatrinoisuy2 = Giatri12
Else
Giatrinoisuy1 = Giatri11 + (Giatri21 - Giatri11) / (Vungnoisuy.Cells(ChisodongMax, 1) - Vungnoisuy.Cells(ChisodongMin, 1)) * (Thamso1 - Vungnoisuy.Cells(ChisodongMin, 1))
Giatrinoisuy2 = Giatri12 + (Giatri22 - Giatri12) / (Vungnoisuy.Cells(ChisodongMax, 1) - Vungnoisuy.Cells(ChisodongMin, 1)) * (Thamso1 - Vungnoisuy.Cells(ChisodongMin, 1))
End If
'Trabang2chieu = Giatrinoisuy2
'Nội suy theo cột
If ChisocotMin = ChisocotMax Then
Trabang2chieu = Giatrinoisuy1
Else
Trabang2chieu = Giatrinoisuy1 + (Giatrinoisuy2 - Giatrinoisuy1) / (Vungnoisuy.Cells(1, ChisocotMax) - Vungnoisuy.Cells(1, ChisocotMin)) * (Thamso2 - Vungnoisuy.Cells(1, ChisocotMin))
End If
End Function
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Vào được trang này hay quá. Tôi thấy lập trình trong Excel cũng hay hay, tiện cho nhiều công việc nên cũng lọ mọ được mấy tháng nay. Cũng có 1 hàm nội suy (tôi chỉ là dân KTS đánh quả nên chế nó để tra giá trị thiết kê..)
..ah mà cái hàm của cậu gì tên THANH tôi load về nhưng sao không chạy được vậy, không biết tại sao
-------------------------------------------------------------
Public Function noisuy(Yt, Xt, VungChon As Range) As Double
Dim Ya As Double, Yb As Double, Xa As Double, Xb As Double
Dim Thamso1 As Double, Thamso2 As Double
Dim Sohang As Byte, Socot As Byte
Dim ia As Byte, ib As Byte, ja As Byte, jb As Byte
Dim Mxa_ya As Double, Mxa_yb As Double, Mxb_ya As Double, Mxb_yb As Double
Dim Txy As Double, T1 As Double, T2 As Double
' Xa, Xb : can duoi, can tren cua phuong ngang
' Ya, Yb : can duoi, can tren cua phuong doc
' Mxa_ya, Mxa_yb, Mxb_ya, Mxb_yb : la gia tri tra bang tuong ung voi (Xa, Ya),(Xa,Yb), (Xb, Ya), (Xb,Yb)
Sohang = VungChon.Rows.Count
Socot = VungChon.Columns.Count
'Noi suy theo phuong ngang
For i = 2 To Socot
Thamso1 = (Xt - VungChon(1, i)) * (Xt - VungChon(1, i + 1))
If Thamso1 < 0 Then
Xa = VungChon(1, i)
Xb = VungChon(1, i + 1)
ia = i
ib = i + 1
GoTo Noisuy_doc
ElseIf Thamso1 = 0 Then
If Xt = VungChon(1, i) Then
Xa = Xt
Xb = Xa
ia = i
ib = ia
GoTo Noisuy_doc
ElseIf Xt = VungChon(1, i + 1) Then
Xa = Xt
Xb = Xa
ia = i + 1
ib = ia
GoTo Noisuy_doc
End If
ElseIf Thamso1 > 0 Then
If Xt < VungChon(1, i) Then
Xa = VungChon(1, i)
Xb = Xa
ia = i
ib = ia
GoTo Noisuy_doc
ElseIf Xt > VungChon(1, Socot) Then
Xa = VungChon(1, Socot)
Xb = Xa
ia = Socot
ib = ia
GoTo Noisuy_doc
End If
End If
Next i
Noisuy_doc: 'Noi suy theo phuong doc
For j = 2 To Sohang
Thamso2 = (Yt - VungChon(j, 1)) * (Yt - VungChon(j + 1, 1))
If Thamso2 < 0 Then
Ya = VungChon(j, 1)
Yb = VungChon(j + 1, 1)
ja = j
jb = j + 1
GoTo Tinh_noisuy
ElseIf Thamso2 = 0 Then
If Yt = VungChon(j, 1) Then
Ya = Yt
Yb = Ya
ja = j
jb = ja
GoTo Tinh_noisuy
ElseIf Yt = VungChon(j + 1, 1) Then
Ya = Yt
Yb = Ya
ja = j + 1
jb = ja
GoTo Tinh_noisuy
End If
ElseIf Thamso2 > 0 Then
If Yt < VungChon(j, 1) Then
Ya = VungChon(j, 1)
Yb = Ya
ja = j
jb = ja
GoTo Tinh_noisuy
ElseIf Yt > VungChon(Sohang, 1) Then
Ya = VungChon(Sohang, 1)
Yb = Ya
ja = Sohang
jb = ja
GoTo Tinh_noisuy
End If
End If
Next j
Tinh_noisuy:
Mxa_ya = VungChon(ja, ia)
Mxa_yb = VungChon(jb, ia)
Mxb_ya = VungChon(ja, ib)
Mxb_yb = VungChon(jb, ib)
If Xa = Xb Then
T1 = Mxa_ya
T2 = Mxa_yb
If Ya = Yb Then
Txy = T1
Else
Txy = noisuy2(T1, T2, Ya, Yb, Yt)
End If
Else
T1 = noisuy2(Mxa_ya, Mxb_ya, Xa, Xb, Xt)
T2 = noisuy2(Mxa_yb, Mxb_yb, Xa, Xb, Xt)
If Ya = Yb Then
Txy = T1
Else
Txy = noisuy2(T1, T2, Ya, Yb, Yt)
End If
End If
noisuy = Txy
End Function
'-------Ham tinh noi suy.Cong thuc tinh: Nt = Na-(Na-Nb)*(Gt-Gb)/(Ga-Gb)
Function noisuy2(Na, Nb, Ga, Gb, Gt)
If Na = Nb Then
noisuy2 = Nb
Else
noisuy2 = Nb - (Nb - Na) * (Gt - Gb) / (Ga - Gb)
End If
End Function
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Nguyên văn bởi truongxdTrước hết cảm ơn các bác vì đề tài thú vị này. Em mới học nên cũng bập bõm được 1 vài hàm đơn giản về tra bảng. Nhờ các bác chỉ cho em làm sao khóa được 1 vùng dữ liệu trong Excel tức là không cho phép người khác sửa chữa trong đó tránh người dùng không biết làm hỏng hết bảng tra. Xin cảm ơn trước!
Thứnhất nếu hàm tra bảng đã được tích hợp trong một file Add-Ins (*.xla) thì bạn chỉ cần bảo mật đoạn code VBA bằng cách: Trong cửa sổ lập trình VBA vào Tools\VBA project Propeties\Protection, đánh dấu vào Lock project for viewing rồi đặt password cho nó, Save dự án lại la xong.
Thứ hai, nếu hàm tra bảng có vùng nội suy là động ( ví dụ như hàm nội suy 2 chiều ở trên diễn đàn ) thì phải bảo vệ vùng nội suy bằng cách chọn vùng cần bảo vệ, vào Format\cells\Protection, đánh dấu vào locked nếu muốn bảo vệ ô, đánh dấu vào hidden nếu muốn nó không hiện trên thanh Formula bar. Sau đó vào Tool\Protection đặt Pass là OK
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Trước hết cảm ơn các bác vì đề tài thú vị này. Em mới học nên cũng bập bõm được 1 vài hàm đơn giản về tra bảng. Nhờ các bác chỉ cho em làm sao khóa được 1 vùng dữ liệu trong Excel tức là không cho phép người khác sửa chữa trong đó tránh người dùng không biết làm hỏng hết bảng tra. Xin cảm ơn trước!
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Các thuật toán mã hòa thường rất phức tạp. Thường chia làm 2 loại chính: mã hóa bí mật và mã hóa công khai(dùng từ ko chuẩn lắm!). Các thuật toán mã hóa thường hay có hàm random(), nhưng trong ngông ngữ lập trình hay ngôn ngữ máy "không có cái gì thực sự là ngẫu nhiên, chúng ta chỉ cố tạo ra những thứ trông giống như ngẫu nhiên mà thôi"(cùng 1 hàm random() sẽ trả về những giá trị như nhau nếu đầu vào của chúng - các seed như nhau ==> điều này minh họa cho ý ko thể có đuọc yếu tố thực sự ngẫu nhiên trong ngông ngữ máy ). Do đó về nguyên tắc, mọi mã hóa đều có thể giải được. Cản trở duy nhất đó là...thời gian giải mã. Nên thay vì cố gắng giải mã hãy đi vô hiệu hóa đoạn mã kích họat mã đó(cái mà các *****er hay làm).
Theo như đoạn code mà bạn đưa lên, thì mọi thứ đều rất tường minh....chỉ có điều có ai đó ngồi phân tích cặn kẽ xem thuật toan sử dụng ở đây cụ thể là như thế nào thôi!
Khi ban chỉ có thông tin đại loại như:
Function StrEncode(ByVal s As String, key As Long, salt As Boolean) As String
Function StrDecode(ByVal s As String, key As Long, salt As Boolean) As String
Và không biết các hàm đó đuọc định nghĩa tường minh như thế nào....Khi đó mới xuất hiện như cầu *****.
Trên đây chỉ là ý kiến chủ quan của tôi.
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
'================================================
Function Decrypt_chuongtrinh(key As Long, salt As Boolean, s As String) As String
Decrypt_chuongtrinh = StrDecode(s, key, salt)
End Function
'================================================
Đây là hàm giải mã một chuỗi ký tự, hàm này sẽ gọi hàm StrDecode
'================================================
Function StrDecode(ByVal s As String, key As Long, salt As Boolean) As String
.....................
.....................
End Function
'================================================
Đây là hàm khôi phục chuỗi từ chuỗi gốc s đã mã hóa
'================================================
Function Encrypt_chuongtrinh(key As Long, salt As Boolean, s As String) As String
Encrypt_chuongtrinh = StrEncode(s, key, salt)
End Function
'================================================
Đây là hàm mã hóa một chuỗi ký tự, hàm này sẽ gọi hàm StrEncode
'================================================
Function StrEncode(ByVal s As String, key As Long, salt As Boolean) As String
.................
.................
End Function
'================================================
Đây là hàm mã hóa chuỗi ban đầu s
Các hàm này, theo tôi thì thường dùng để xây dựng tính năng bảo mật của một ứng dụng. Hiện nay cũng có khá nhiều ứng dụng bảo mật theo kiểu này. Chương trình sẽ cho phép người dùng nhập vào một chuỗi ký tự(thường gọi là mã sử dụng chương trình), chương trình sẽ mã hóa ký tự này và so sánh với mã chuẩn. Nếu hai mã khớp nhau thì chương trình chạy tiếp, nếu sai thì ngừng. Mã chuẩn sẽ được lưu giữ vào trong Registry của Windows hoặc đâu đó trên máy.
Trên đây là nhận định của tôi(Vì tôi thường hay bảo mật theo cách này).Bạn nào có cao kiến gì khác không, tôi xin lĩnh giáo
[/QUOTE]
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Nguyên văn bởi Mai CuongViệc gì phải lập trình cho nó khổ thân hả bạn.!!!
Copy bên Excel xong, vào Cad chọn Edit/Paste special/Autocad Entilies/OK là được thôi mà.
Cám ơn bạn! Đúng là thế thật, từ trước đến giờ toàn dùng chuột phải trong copy n' paste nên ko để ý. Mà sao họ ko đưa paste special vào menu của chuột phải nhỉ?
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Nguyên văn bởi Kidsmart1981Các anh cho hỏi, làm cách nào (lập trình) để xuất các bảng tính từ Excel sang môi trường AutoCad, tại đó các bảng tính này thực sự là những entities của Cad để có thể chỉnh sửa vô tư. Với việc copy n' paste thì chỉ dừng lại ở giới hạn của chuẩn OLE.
Cám ơn các bác, các chú, các anh...
Copy bên Excel xong, vào Cad chọn Edit/Paste special/Autocad Entilies/OK là được thôi mà.
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
Các anh cho hỏi, làm cách nào (lập trình) để xuất các bảng tính từ Excel sang môi trường AutoCad, tại đó các bảng tính này thực sự là những entities của Cad để có thể chỉnh sửa vô tư. Với việc copy n' paste thì chỉ dừng lại ở giới hạn của chuẩn OLE.
Cám ơn các bác, các chú, các anh...
Leave a comment:
-
Ðề: Mỗi tuần một hàm trong Excel!
[QUOTE]Cái add in của bác Niceshot dùng như thế nào vậy? em add vào rồi mà khốnguwr dụng được. Bác chỉ giúp em với !!!!!!
Leave a comment:
Quảng cáo cuối trang
Collapse
Leave a comment: