nguyentieu
Thành viên hoạt động



- Tham gia
- 12/2/09
- Bài viết
- 109
- Được thích
- 10
- Nghề nghiệp
- Sinh viên
E4=IF(ROW()-3<INT($B$3),1,IF(MOD($B$3,ROW()-3)>1,"",MOD($B$3,ROW()-3)))
Tác giả nói rằng:Bạn thử dùng công thức sau, fill xuống!
Tôi nghĩ chắc luôn luôn là 10 khoảng, có nghĩa là chia số nhập 10 phần, 9 cell trên là phần nguyên của phép chia và cell thứ 10 là phần thừaEm đang có một vấn đề như sau muốn nhờ ACE chỉ giáo:
Nhập vào một ô bất kì trong Excel 1 giá trị chẳng hạn như 10.5 thì tự động chia nhỏ thành 10 khoảng trong đó 9 khoảng 1 và 1 khoảng 0.5.
Chi tiết e có đính kèm trong file excel.
Thanks
Bạn thử dùng công thức sau, fill xuống!
Muốn tự động và hiệu quả cao ta dùng code VBA ---> Nếu bạn đồng ý thì chúng ta tiếp tục (đại khái sẽ tạo 1 Form cho bạn nhập điều kiện đầu vào)Cảm ơn bạn!
Bạn có thể nói thêm cho mình là "Nên hiểu công thức này như thế nào vậy?"
Bởi vì khoảng chia của mình sao động trong khoảng từ 1, 1.1, 1.2,...,2 chứ ko phải lúc nào cũng chia đều là 1 cả.
Còn một việc nữa là có cách nào tự chương trình nó chia cho mình không nhỉ? (nghĩa là mình ko phải fill)
Muốn tự động và hiệu quả cao ta dùng code VBA ---> Nếu bạn đồng ý thì chúng ta tiếp tục (đại khái sẽ tạo 1 Form cho bạn nhập điều kiện đầu vào)
Phân bao nhiêu cũng đươc, nhưng bạn hãy đưa quy luật rõ ràng, có thí dụ mà bạn cũng hà tiện nữa, hãy nêu quy luật và vài thí dụ điển hình thì anh em mới hiểu để giúp bạn chứ. Hổng biết có phải tại làm mấy ve (mừng Việt Nam chiến thắng) hông nữa mà mình đọc hoài cũng chẳng hiểuCảm ơn bạn!
Bạn có thể nói thêm cho mình là "Nên hiểu công thức này như thế nào vậy?"
Bởi vì khoảng chia của mình sao động trong khoảng từ 1, 1.1, 1.2,...,2 chứ ko phải lúc nào cũng chia đều là 1 cả.
Còn một việc nữa là có cách nào tự chương trình nó chia cho mình không nhỉ? (nghĩa là mình ko phải fill)
Cảm ơn mọi ngưởi, có thể yêu cầu mình đưa ra là chưa cụ thể, mình sẽ mô tả cụ thể như sau:
Ví dụ: theo phương thẳng đứng từ trên xuống có 2 đoạn thẳng đoạn 1 dài 6,25m (C4), đoạn 2 dài 5,5m (C5). Yêu cầu chia mỗi đoạn thẳng thành các đoạn <= 2m, kết quả như ở vùng (H4:H10).
E đã đính kèm file kèm theo hình minh họa.
Mong các ACE chỉ giáo.
Thanks
Cảm ơn bác, công thức bác đưa ra rất ok tuy nhiên khi có nhiều đoạn thẳng có chiều dài khác nhau thì phải làm thủ công nên hơi cực. Bác có thế giúp e chỗ đó nữa ko ạ?
Cụ thể như trong file e đã gửi đấy ạ. Sau khi chia đoạn 6.25 (ĐOẠN 1) rồi thì tiếp tục chia đoạn 5.5 (ĐOẠN 2). File bác giúp e chỉ chia 1 đoạn 6.25 thôi!
Bác hiểu sai ý em rồi. E muốn là khi nhập vào hai ô là 6.25 và 5.5 thì sau khi chia xong đoạn 6.25 rồi thì chia tiếp cho đoạn 5.5 ko tách ra làm 2 lần như bác. Cụ thể như file e gửi sau.Trời ơi, nhập số 5.5 vô B1 và độ dài đoạn lớn nhất vô B2 là nó tự chia rồi còn gì?
Bác hiểu sai ý em rồi. E muốn là khi nhập vào hai ô là 6.25 và 5.5 thì sau khi chia xong đoạn 6.25 rồi thì chia tiếp cho đoạn 5.5 ko tách ra làm 2 lần như bác. Cụ thể như file e gửi sau.
Xem thế này đã đúng ý chưa?
Thật tuyệt vời!![]()
Rất cảm ơn bác boyxin đã giúp e.
Bác có thể bớt chút thời gian để hướng dẫn e sử dụng file đó ko ạ? E nhìn vào mà ko hiểu tại sao làm được như vậy? Tại sao đi đưa chuột vào ô nhập chiều dài đoạn thì lại có "comment" (hình như ko phải vậy) là: "Input number here"? E có đọc qua macro nhưng cũng ko hiểu? Mong bác giúp đỡ.
Thanks
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b:b")) Is Nothing Then
Application.ScreenUpdating = False
[e2].CurrentRegion.Offset(1).Clear
If (IsNumeric([b1]) = False) Or [b1] <= 0 Then Exit Sub
For Each clls In Range([b2], [b65535].End(xlUp).Offset(1))
If (IsNumeric(clls) = True) And (clls > 0) Then
d = d + 1: j = 0
[e65535].End(xlUp).Offset(1, 1) = [f1] & " " & d
Do: j = j + 1: On Error Resume Next
With [f65535].End(xlUp).Offset(j - 1, -2)
.Offset(, 1) = IIf(clls < [b1] * j, clls - [b1] * (j - 1), [b1])
.Resize(, 3).BorderAround LineStyle:=1
.Resize(, 3).Borders(11).LineStyle = 1
.Resize(, 3).Interior.ColorIndex = 35 + (d Mod 2)
End With
Loop Until [b1] * j >= clls
End If
Next
If d > 0 Then Range([d2], [e1].End(xlDown).Offset(, -1)) = Evaluate("ROW(a:a)")
Application.ScreenUpdating = True
End If
End Sub
1) Phần code là thực hiện theo yêu cầu của bạn thôi (Thay đoạn code sau đây gọn hơn chút và chuẩn hơn)![]()
Hjx.. e gặp chút rắc rối khi vận dụng nó vào trong bài làm của e. Khi đó phải di chuyển các ô xuống dòng thứ 10 của sheet. Còn ô Phần lớn nhất B2 thì nằm tại vị trí B9.
Có cách nào chuyển cái code của bác thành một công thức ko vậy?
Mong bác giúp e chỉnh lại code.
Thanks