Nhờ xem giúp hàm tính ra độ dài chia trong khoảng và cho số dư nhỏ nhất

Liên hệ QC

Đức Thiện

Thành viên mới
Tham gia
12/3/20
Bài viết
12
Được thích
3
em có 2 hàm tự tạo,một hàm thì lúc chạy lúc ko,còn 1 hàm thì chạy ko đúng như mong muốn ạ
rất mong các bác giúp đỡ,thanks all
 

File đính kèm

em có 2 hàm tự tạo,một hàm thì lúc chạy lúc ko,còn 1 hàm thì chạy ko đúng như mong muốn ạ
rất mong các bác giúp đỡ,thanks all
Vấn đề là bạn phải giải thích hàm tự tạo cần làm chức năng gì? Biết đâu có hướng nào đó khác hướng bạn đang viết thì sao
 
em có 2 hàm tự tạo,một hàm thì lúc chạy lúc ko,còn 1 hàm thì chạy ko đúng như mong muốn ạ
rất mong các bác giúp đỡ,thanks all
Tôi không biết mục đích của hàm nàu là gì nhưng nghĩ rằng cần có thêm (đoạn tô đậm để hàm chạy được cả khi A2>1)
For sodoan = 2 To 9
If (chieudai / sodoan) >= 220 And (chieudai / sodoan) <= 270 Then
Chiakc = (chieudai / sodoan) - 1
'Exit For
Else
gì gì đó. Chẳng hạn Chiakc = (chieudai / sodoan)
End If
 
Vấn đề là bạn phải giải thích hàm tự tạo cần làm chức năng gì? Biết đâu có hướng nào đó khác hướng bạn đang viết thì sao
em có tạo comment trong file rồi đó ạ
hàm chia khoảng cách em muốn chia độ dài đoạn thẳng thành các phần bằng nhau và độ dài mỗi đoạn nằm trong khoảng 220-270
ví dụ như em nhập độ dài 500 thì đoạn thẳng đc chia ra sẽ có độ dài là 250 ạ
còn hàm mirror em muốn cộng hoặc trừ số đằng sau kí tự X và giữ nguyên các vị trí còn lại
ví dụ như ô D2 của em có chuỗi X5.51Y971.65T312 thì khi ô D3 em nhập công thức mirror(D2,2100) thì kết quả sẽ là X2094.49Y971.65T312 ạ (tức là lấy số 2100-5.51 đó ạ)
Bài đã được tự động gộp:

Tôi không biết mục đích của hàm nàu là gì nhưng nghĩ rằng cần có thêm (đoạn tô đậm để hàm chạy được cả khi A2>1)
For sodoan = 2 To 9
If (chieudai / sodoan) >= 220 And (chieudai / sodoan) <= 270 Then
Chiakc = (chieudai / sodoan) - 1
'Exit For
Else
gì gì đó. Chẳng hạn Chiakc = (chieudai / sodoan)
End If
tức là em đặt công thức để giá trị ô B2 thay đổi thôi ạ,mục đích chính là làm sao khi giá trị ô B2 thay đổ mà công thức vẫn chạy được đó ạ
 
Lần chỉnh sửa cuối:
Yêu cầu thì phức tạp mà nói chuyện diễn tả viết tắt tùm lum, lười viết hoa chỗ chấm câu.
Mục đích của bạn là cần người ta giải quyết vấn đề cho mình. Để người ta giải quyết một cách hiệu quả thì bạn phải tự có bổn phận chịu khó viết rõ ràng, diễn tả vấn đề và kết quả mong muốn cho minh bạch.

Vấn đề 1:
Nhập một độ dài. Hàm sẽ tính ra độ dài chia trong khoảng 220-270, và cho ra số dư nhỏ nhất.
Function DoanPhan(byVal ln As Long) As Long
Const LNMIN = 220&
Const LNMAX = 270&
DoanPhan = ln
If ln < LNMIN Then Exit Function
Dim cLn As Long, cRm As Long, rm As Long
rm = LNMAX
For cLn = LNMIN To LNMAX
cRm = ln Mod cLn
If rm > cRm Then
DoanPhan = cLn ' take this optimum values
rm = cRm
End If
If rm = 0 Then Exit For
Next cLn
End Function

Vấn đề 2, hàm tính quái dị, mirror là không rõ mirror cái gì. Đúng từ ngữ thì phải là shift (dời đi một đoạn).

Function Mirror(ByVal s As String, ByVal shift As Double) As String
Dim i As Long, c As String, sNum As String
For i = InStr(s, "X") + 1 To Len(s)
c = Mid(s, i, 1)
If IsNumeric(c) Or c = "."Then
sNum = sNum & c
Mid(s, i, 1) = " "
Else
Exit For
End If
Next i
Mirror = Replace(Application.Trim(s), " ", CStr(shift - Val(sNum)))
End Function

Chú thích: muốn nói cám ơn dùng tiếng Việt không được sao mà phải theo Tây vậy?
 
Yêu cầu thì phức tạp mà nói chuyện diễn tả viết tắt tùm lum, lười viết hoa chỗ chấm câu.
Mục đích của bạn là cần người ta giải quyết vấn đề cho mình. Để người ta giải quyết một cách hiệu quả thì bạn phải tự có bổn phận chịu khó viết rõ ràng, diễn tả vấn đề và kết quả mong muốn cho minh bạch.

Vấn đề 1:
Nhập một độ dài. Hàm sẽ tính ra độ dài chia trong khoảng 220-270, và cho ra số dư nhỏ nhất.
Function DoanPhan(byVal ln As Long) As Long
Const LNMIN = 220&
Const LNMAX = 270&
DoanPhan = ln
If ln < LNMIN Then Exit Function
Dim cLn As Long, cRm As Long, rm As Long
rm = LNMAX
For cLn = LNMIN To LNMAX
cRm = ln Mod cLn
If rm > cRm Then
DoanPhan = cLn ' take this optimum values
rm = cRm
End If
If rm = 0 Then Exit For
Next cLn
End Function

Vấn đề 2, hàm tính quái dị, mirror là không rõ mirror cái gì. Đúng từ ngữ thì phải là shift (dời đi một đoạn).

Function Mirror(ByVal s As String, ByVal shift As Double) As String
Dim i As Long, c As String, sNum As String
For i = InStr(s, "X") + 1 To Len(s)
c = Mid(s, i, 1)
If IsNumeric(c) Or c = "."Then
sNum = sNum & c
Mid(s, i, 1) = " "
Else
Exit For
End If
Next i
Mirror = Replace(Application.Trim(s), " ", CStr(shift - Val(sNum)))
End Function

Chú thích: muốn nói cám ơn dùng tiếng Việt không được sao mà phải theo Tây vậy?
em cảm ơn bác nhiều ạ,em sẽ rút kinh nghiệm lần sau ạ
 
Web KT

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

Back
Top Bottom