Tạo hàm Round cho nhiều dòng

Liên hệ QC

longphithanh

Thành viên mới
Tham gia
22/6/07
Bài viết
15
Được thích
1
Mình lập dự toán, yêu cầu là phải làm tròn cột thành tiền (không lấy hàng thập phân) bao gồm nhiều dòng với mỗi dòng là một công thức khác nhau. (tránh tình trạng 3+5=9, vì thực chất 3 là 3,3 và 5 là 5,45 chẳng hạn)
Mình chưa biết cách lập trình bằng VBA nên thường làm như sau
1. Cho hiện tất cả công thức (Ctrl+`)
2.(Ctrl+F) Replace dấu = trong các công thức của cột thành tiền thành dấu ( " ).
3. Rồi dùng hàm CONCATENATE nối các ô vừa replace với ô có chứa { ;0) }
4. cho hiện lại giá trị (Ctrl+`)
4. Copy ô vừa nối sang word
5. (Ctrl+G) Replace dấu ( " ) thành (=ROUND(
6. Copy ngược lại sang excel
Nhờ các bạn viết giúp mình code VBA thực hiện công việc trên một cách tự động.
Ví dụ: trong file đính kèm.
 

File đính kèm

  • Round nhieu dong 3.xls
    31.5 KB · Đọc: 64
Mình lập dự toán, yêu cầu là phải làm tròn cột thành tiền (không lấy hàng thập phân) bao gồm nhiều dòng với mỗi dòng là một công thức khác nhau. (tránh tình trạng 3+5=9, vì thực chất 3 là 3,3 và 5 là 5,45 chẳng hạn)
Mình chưa biết cách lập trình bằng VBA nên thường làm như sau
1. Cho hiện tất cả công thức (Ctrl+`)
2.(Ctrl+F) Replace dấu = trong các công thức của cột thành tiền thành dấu ( " ).
3. Rồi dùng hàm CONCATENATE nối các ô vừa replace với ô có chứa { ;0) }
4. cho hiện lại giá trị (Ctrl+`)
4. Copy ô vừa nối sang word
5. (Ctrl+G) Replace dấu ( " ) thành (=ROUND(
6. Copy ngược lại sang excel
Nhờ các bạn viết giúp mình code VBA thực hiện công việc trên một cách tự động.
Ví dụ: trong file đính kèm.
Nếu dùng VBA thì được nhưng mình có thắc mắc chút vì sao khi bạn thiết lập công thức bạn không đưa hàm ROUND từ đầu mà để rồi thực hiện việc khổ cực như vậy hay bạn có ý gì khác không?
- Có phải bạn muốn thêm hàm ROUND cho tất cả các công thức ở cột thành tiền không?
 
Lần chỉnh sửa cuối:
Vì mình dùng phần mềm lập dự toán, rồi xuất ra excel nên các công thức là do phần mềm lập chứ không phải mình đánh.
Đúng rồi. Mình muốn nhờ các bạn dùng VBA để thêm round vào tất cả các công thức ở cột thành tiền, giống trong file excel mình đính kèm ở trên
 
Có bạn nào giúp mình với.
Nhìn vào file của bạn mình chẳng biết làm cột nào, thôi thì làm tạm thế này:
Mã:
Public Sub ChenRound()
    Dim Vung, Cll, Tam
    Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)
        For Each Cll In Vung
            Tam = Replace(Cll.Formula, "=", "")
            Cll.Formula = "=ROUND(" & Tam & ",0)"
        Next Cll
End Sub
Bạn chạy code ==> xuất hiên một Input Box ==> bạn chọn vùng muốn thêm hàm ROUND ==> nhấn OK
Có gì bàn tiếp
Thân
 
Nhìn vào file của bạn mình chẳng biết làm cột nào, thôi thì làm tạm thế này:
Mã:
Public Sub ChenRound()
    Dim Vung, Cll, Tam
    Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)
        For Each Cll In Vung
            Tam = Replace(Cll.Formula, "=", "")
            Cll.Formula = "=ROUND(" & Tam & ",0)"
        Next Cll
End Sub
Bạn chạy code ==> xuất hiên một Input Box ==> bạn chọn vùng muốn thêm hàm ROUND ==> nhấn OK
Có gì bàn tiếp
Thân
đơn giản vậy mà mình nghĩ mãi không ra. Cảm ơn bạn đã chỉ giúp.
 
Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)Có thể quét luôn cả vùng muốn đặt công thức, bỏ dòng Set Vung... mà dùng luôn vòng lặpFor Each Cll in Selection....Next
 
Nhìn vào file của bạn mình chẳng biết làm cột nào, thôi thì làm tạm thế này:
Mã:
Public Sub ChenRound()
    Dim Vung, Cll, Tam
    Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)
        For Each Cll In Vung
            Tam = Replace(Cll.Formula, "=", "")
            Cll.Formula = "=ROUND(" & Tam & ",0)"
        Next Cll
End Sub
Bạn chạy code ==> xuất hiên một Input Box ==> bạn chọn vùng muốn thêm hàm ROUND ==> nhấn OK
Có gì bàn tiếp
Thân

Công nhận cái này hay thật. Bái phục.
 
Public Sub ChenRound()
Dim Vung, Cll, Tam
Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)
For Each Cll In Vung
Tam = Replace(Cll.Formula, "=", "")
Cll.Formula = "=ROUND(" & Tam & ",0)"
Next Cll
End Sub

mình cũng đang cần cảm ơn bạn nhìu, tuy nhiên nếu trong vùng chọn mà có cell dang có hàm round thì nó lại thêm hàm roun nữa lồng vào thì thật không hay chút nào bạn có thể tìm và xóa hàm round cũ trước rồi sau đó mới thêm round này được không, nếu được thì mới thật là hoàn hảo. mong bạn giúp luôn nhé
thêm nữa
-Đã round(*,n) thì phải format cell luôn là n số thập phân
-Nếu trong cell có cell nào đó đang chứa công thức lồng nhau thì sẽ sinh lỗi(vì dấu = bên trong dã bị xóa)
-Những cell rỗng thì lại thành không rỗng
 
Lần chỉnh sửa cuối:
Nhìn vào file của bạn mình chẳng biết làm cột nào, thôi thì làm tạm thế này:
Mã:
Public Sub ChenRound()
    Dim Vung, Cll, Tam
    Set Vung = Application.InputBox("Nhap vung muon chen ham ROUND", , , , , , , 8)
        For Each Cll In Vung
            Tam = Replace(Cll.Formula, "=", "")
            Cll.Formula = "=ROUND(" & Tam & ",0)"
        Next Cll
End Sub
Bạn chạy code ==> xuất hiên một Input Box ==> bạn chọn vùng muốn thêm hàm ROUND ==> nhấn OK
Có gì bàn tiếp
Thân
Cái này bạn có thể giúp chỉ thêm dòng code nào để nó hiện ra bảng thông báo nhập số mà mình cần làm tròn luôn đc ko, mà không phải chỉnh sửa vị trí ",0)" trực tiếp trong code như giờ.
 
Trên này đã có 1 bài bàn về thêm round. Trong 1 năm trở lại đây, nhưng tìm kiếm thì hên xui. Chịu khó tìm trong lúc chờ đợi nghen.
 
Trên này đã có 1 bài bàn về thêm round. Trong 1 năm trở lại đây, nhưng tìm kiếm thì hên xui. Chịu khó tìm trong lúc chờ đợi nghen.
Chẳng liên quan câu hỏi.
Cái này bạn có thể giúp chỉ thêm dòng code nào để nó hiện ra bảng thông báo nhập số mà mình cần làm tròn luôn đc ko, mà không phải chỉnh sửa vị trí ",0)" trực tiếp trong code như giờ.
Thêm 1 câu lệnh
n = Application.InputBox("Lam tron may con?", "Round", ,,,,,1)
sau đó thay ",0" bằng "," & n
 
Web KT
Back
Top Bottom