cách chèn 1 loạt hàm round vào trong công thức

Liên hệ QC

sonchuot90

Thành viên mới
Tham gia
16/4/22
Bài viết
42
Được thích
6
Em xin chào anh chị trong diễn đàn, nhờ anh chị hướng dẫn giúp em cách chèn thêm hàm round vào ô đã có công thức
Mong anh chị giúp đỡ e ạ, Em xin cám ơn ạ
Giúp.JPG
 

File đính kèm

  • Xin trợ giúp.xlsm
    9.3 KB · Đọc: 9
Em xin chào anh chị trong diễn đàn, nhờ anh chị hướng dẫn giúp em cách chèn thêm hàm round vào ô đã có công thức
Mong anh chị giúp đỡ e ạ, Em xin cám ơn ạ
View attachment 282191
Hình như bạn muốn khi nhập hàm round vào ô đầu tiên có công thức thì những ô kế tiếp sau đó tự động cập nhật hàm round vào cho mình không phải copi xuống đúng không ? Nếu đúng cần như vậy thì sử dụng Table là được
 
Upvote 0
Ô F3=Round(D3.0) kéo xuống ...
 
Upvote 0
Hình như bạn muốn khi nhập hàm round vào ô đầu tiên có công thức thì những ô kế tiếp sau đó tự động cập nhật hàm round vào cho mình không phải copi xuống đúng không ? Nếu đúng cần như vậy thì sử dụng Table là được
Dạ. Mình có công thức trước rồi. Bây giờ muốn chèn thêm hàm round vào trong công thức đấy
Bài đã được tự động gộp:

Ô F3=Round(D3.0) kéo xuống ...
Không đúng rồi bạn ạ. Ý mình là có công thức rồi. Muốn thêm hàm round vào công thức đấy.
 
Upvote 0
Làm vầy nha:
1. Tại A1 bạn nhấn Ctrl + H --> Replace, chuyển cái dấu "=" thành dấu "#" (ví dụ ô cần thêm round là A1)
1665970854502.png
2. Sau khi đã chuyển công thức thành chuỗi, bạn thêm 1 cột phụ (ví dụ B1) dùng công thức.
PHP:
=SUBSTITUTE(A1&",0)","#","#Round(")

1665970918889.png
bạn thu được chuỗi đã thêm hàm Round.
3. Chọn B1, nhấn copy rồi paste ra C1 dạng Paste Values
1665971112800.png
4. Tại C1 làm lại bước 1, nhấn Ctrl + H --> Replace, chuyển ngược lại dấu # thành dấu =
----------
Cách này nhẹ nhàng dễ dùng :D tuy nhiều bước, nhưng bạn hiểu nguyên tắc thì không có gì khó cả, và bạn có thể làm một lúc cho rất nhiều ô.
 
Upvote 0
Hoặc bạn có thể sử dụng đoạn mã sau.
PHP:
Sub AddRound()
    For Each Cell In Selection
        If Cell.Formula <> "" and InStr(Cell.Formula, "ROUND") <> 2 Then
            Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(")
        End If
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Làm vầy nha:
1. Tại A1 bạn nhấn Ctrl + H --> Replace, chuyển cái dấu "=" thành dấu "#" (ví dụ ô cần thêm round là A1)
View attachment 282224
2. Sau khi đã chuyển công thức thành chuỗi, bạn thêm 1 cột phụ (ví dụ B1) dùng công thức.
PHP:
=SUBSTITUTE(A1&",0)","#","#Round(")

View attachment 282225
bạn thu được chuỗi đã thêm hàm Round.
3. Chọn B1, nhấn copy rồi paste ra C1 dạng Paste Values
View attachment 282226
4. Tại C1 làm lại bước 1, nhấn Ctrl + H --> Replace, chuyển ngược lại dấu # thành dấu =
----------
Cách này nhẹ nhàng dễ dùng :D tuy nhiều bước, nhưng bạn hiểu nguyên tắc thì không có gì khó cả, và bạn có thể làm một lúc cho rất nhiều ô.
Vâng. Cám ơn anh nhiều ạ

Làm vầy nha:
1. Tại A1 bạn nhấn Ctrl + H --> Replace, chuyển cái dấu "=" thành dấu "#" (ví dụ ô cần thêm round là A1)
View attachment 282224
2. Sau khi đã chuyển công thức thành chuỗi, bạn thêm 1 cột phụ (ví dụ B1) dùng công thức.
PHP:
=SUBSTITUTE(A1&",0)","#","#Round(")

View attachment 282225
bạn thu được chuỗi đã thêm hàm Round.
3. Chọn B1, nhấn copy rồi paste ra C1 dạng Paste Values
View attachment 282226
4. Tại C1 làm lại bước 1, nhấn Ctrl + H --> Replace, chuyển ngược lại dấu # thành dấu =
----------
Cách này nhẹ nhàng dễ dùng :D tuy nhiều bước, nhưng bạn hiểu nguyên tắc thì không có gì khó cả, và bạn có thể làm một lúc cho rất nhiều ô.
Vâng. Em cám ơn anh
Bài đã được tự động gộp:

Hoặc bạn có thể sử dụng đoạn mã sau.
PHP:
Sub AddRound()
    For Each Cell In Selection
        If Cell.Formula <> "" and InStr(Cell.Formula, "ROUND") <> 2 Then
            Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(")
        End If
    Next
End Sub
Vâng. Code anh nhanh gọn. Em cám ơn anh ạ
 
Upvote 0
Hoặc bạn có thể sử dụng đoạn mã sau.
PHP:
Sub AddRound()
    For Each Cell In Selection
        If Cell.Formula <> "" and InStr(Cell.Formula, "ROUND") <> 2 Then
            Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(")
        End If
    Next
End Sub
Code này không hẳn đúng. Tức là có những lúc nó ra sai.
Bạn tự suy nghĩ xem trường hợp nào thì nó sai.
 
Upvote 0
có phải ý bác muốn đề cập đến hàm InStr ko nhỉ?
Thiếu trường hợp ô chỉ chứa giá trị, code tại bài #6 sẽ bị sai.
Nên sửa thành:
Mã:
Sub AddRound()
    For Each Cell In Selection
        If Cell.HasFormula = True And InStr(Cell.Formula, "ROUND") <> 2 Then
            Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(")
        End If
    Next
End Sub
Bài đã được tự động gộp:

Code này không hẳn đúng. Tức là có những lúc nó ra sai.
Bạn tự suy nghĩ xem trường hợp nào thì nó sai.
Em sửa lại như trên rồi, anh góp ý thêm để hoàn thiện luôn.
 
Upvote 0
...
Em sửa lại như trên rồi, anh góp ý thêm để hoàn thiện luôn.
Replace("=IF(A1=B1, 1, 2)" & ")", "=", "=Round(")
---> =Round(IF(A1=Round(B1, 1, 2),0)
(vì công thức này lỗi cho nên VBA sẽ báo lỗi thay vì cho kết quả sai)

Gợi ý: hàm Replace có một tham số cho biết cần thay mấy lượt.
 
Upvote 0
Replace("=IF(A1=B1, 1, 2)" & ")", "=", "=Round(")
---> =Round(IF(A1=Round(B1, 1, 2),0)
(vì công thức này lỗi cho nên VBA sẽ báo lỗi thay vì cho kết quả sai)

Gợi ý: hàm Replace có một tham số cho biết cần thay mấy lượt.
Cảm ơn anh, em chỉnh lại.
Mã:
Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(", , 1)
Replace(expression, find, replace, [ start, [ count, [ compare ]]])
 
Upvote 0
Thiếu trường hợp ô chỉ chứa giá trị, code tại bài #6 sẽ bị sai.
Nên sửa thành:
Mã:
Sub AddRound()
    For Each Cell In Selection
        If Cell.HasFormula = True And InStr(Cell.Formula, "ROUND") <> 2 Then
            Cell.Formula = Replace(Cell.Formula & ",0)", "=", "=Round(")
        End If
    Next
End Sub
Bài đã được tự động gộp:


Em sửa lại như trên rồi, anh góp ý thêm để hoàn thiện luôn.
Lỡ dữ liệu họ có hàm Round đầu tiên thì sao nhỉ
 
Upvote 0
Việc đó không nằm trong khuôn khổ giới hạn của đề bài này. Round bọc nhau vài ba lần cũng chả chết ai.
Đúng là bọc nhau chả chết ai, nhưng code của bác huhumalu lại có thực hiện bọc nhau trong trường hợp này đâu (Em mở rộng tí thôi, còn đối với đề bài thì code bác ấy chuẩn rồi)
 
Upvote 0
Các a ạ, còn tí tẹo vấn đề với những người thích dùng dấu + nữa.
Gõ dấu + thay cho = là dư âm của Lotus123

Lỡ dữ liệu họ có hàm Round đầu tiên thì sao nhỉ
Bài đã được tự động gộp:

Có khúc bẫy
Mã:
InStr(Cell.Formula, "ROUND") <> 2
để tránh add nhiều lần khi code chạy nhiều lần.
Chỉ có đối số hàm round khác nhau thì thôi, chán luôn.
 

File đính kèm

  • options.png
    options.png
    8.4 KB · Đọc: 13
Upvote 0
Web KT

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

Back
Top Bottom