Hỏi về cách loại bỏ hàm trong công thức excel (1 người xem)

Người dùng đang xem chủ đề này

hoclaptrinh

Thành viên hoạt động
Tham gia
28/8/14
Bài viết
151
Được thích
6
em có 1 bảng tính có rất nhiều hàm ROUND giờ em muốn bỏ tất cả các hàm này chỉ đề lại phép tính thì làm thế nào vậy?
VD: =Round(a1 b1 c1;1) giờ me muốn là =(a1 b1 c1)
 
Lần chỉnh sửa cuối:
có ai giúp mình với không???
 
Lần chỉnh sửa cuối:
nhưng có rất nhiều ô như vậy, em muốn dùng find hoặc VBA để bỏ thì mới nhanh được. Chứ ngồi mà tìm và xóa thì bao giờ cho xong

Bạn Ctrl + H rồi Replace cũng được vậy. Ví dụ:
- Thay =ROUND( thành |||
- Thay ;1) thành rổng
- Thay ||| thành =
----------------
Chỉ là gợi ý, bạn có thể tùy biến cho phù hợp
 
Bạn Ctrl H rồi Replace cũng được vậy. Ví dụ:
- Thay =ROUND( thành |||
- Thay ;1) thành rổng
- Thay ||| thành =
----------------
Chỉ là gợi ý, bạn có thể tùy biến cho phù hợp
dấu ||| là gì vậy??mình không hiểu nên không áp dụng được
 
Lần chỉnh sửa cuối:
dấu ||| là gì vậy??mình không hiểu nên không áp dụng được

Là dấu... trên bàn phím thôi --=0
Nếu không biết, bạn có thể thay thành ký tự khác, miễn nó tương đối đặc biệt một chút để không trùng với các ký tự khác có trong dữ liệu là được rồi
 
Ok em hiểu rồi thanh anh nhiều nha
 
Lần chỉnh sửa cuối:
anh có thể nào viết cho em một đoạn code nho nhỏ để làm được việc đó không vậy? em cũng đang tập viết nên cố gắn học hihi
 
Lần chỉnh sửa cuối:
có ai giúp mình viết đoạn code được không???
 
Lần chỉnh sửa cuối:
có ai giúp mình viết đoạn code được không???
Từ từ mà nghiên cứu nhá.
PHP:
Private Sub Auto_Open()
  With Application.CommandBars("Cell").Controls.Add(1, , , 1)
    .Caption = "Replace On Cells"
    .OnAction = "ReplaceOnCells"
  End With
End Sub
Private Sub Auto_Close()
  Application.CommandBars("Cell").Reset
End Sub
Sub ReplaceOnCells()
Application.ScreenUpdating = False
   With ActiveSheet.UsedRange 'hoac thay activesheet.useddrange là selection
      .Replace "=Round(", "|"
      .Replace ";1)", ""
      .Replace "|", "="
   End With
Application.ScreenUpdating = True
End Sub
 
cảm ơn anh đã giúp em.
sao em thử nhưng nó không triệt tiêu hết, nó chỉ chạy được dòng .Replace "=Round(", "|"
Còn lại 2 dòng kia thì dứng luôn
và còn 1 vấn đề nữa là trong cong thức đó sau dấu , có nhiều loại có thề là 1, 2, 3, 4, 0 chứ không phải là 1 mặc định. Anh xem lại rồi giúp em với nha

Thay số 1 thành dấu *

.Replace ";*)", ""
 
nhưng nó chỉ thực hiện được 1 dòng lệnh thôi, còn 2 dòng dưới thì nó dừng lại mất anh ơi
 
Lần chỉnh sửa cuối:
đây là file em đã thử cho ra kết quả là vậy đó anh
 

File đính kèm

Lần chỉnh sửa cuối:
nếu thay như thế thì được
nhưng em không biết là lỗi gì vì muốn đổi dấu ; = , thì cũng phải thay đổi toản bảng tính excel luôn
 
Lần chỉnh sửa cuối:
em có 1 bảng tính có rất nhiều hàm ROUND giờ em muốn bỏ tất cả các hàm này chỉ đề lại phép tính thì làm thế nào vậy?
VD: =Round(a1+b1+c1;1) giờ me muốn là =(a1+b1+c1)

Nếu làm thủ công thì thực hiện theo 5 bước sau:
1. Chọn vùng chứa dữ liệu
2. Nhấn Ctrl+H
3. Replace "=ROUND(" thành "("
4. Replace ";*" thành ")"
5. Replace "(" thành "=("

Nếu dùng code thì chọn vùng chứa dữ liệu và chạy code sau (thời gian viết code cho trường hợp này còn lâu hơn làm thủ công)
Mã:
Sub Macro1()
    With Selection
        .Replace "=ROUND", "("
        .Replace ";*", ")"
        .Replace "(", "=("
    End With
End Sub
 
Lần chỉnh sửa cuối:
Đoạn số 5 này cũng dễ toi đời anh nhỉ? (nhất là khi có hàm lồng trong hàm)
Bởi vậy mà em mới khuyên tác giả thay =ROUND( thành ký tự đặc biệt nào đó

Bài post lúc đầu mình viết là
Replace "=" thành "_"
Replace "ROUND" thành ""

Rồi cuối cùng Replace "_" thành "="

Sau thấy có thể ghép vào được để bớt đi 1 dòng lệnh nên mới sửa lại bài. Với lại khi mình viết code thường là mình không nghĩ được rộng cho các trường hợp khác (bóc đâu cắn đấy thôi).

Còn nếu lồng hàm thì code này không dùng được vì Replace ";*" thành ")" cũng toi đời rồi.
 
Lần chỉnh sửa cuối:
Bài toán chắc chẳng có gì phức tạp nhưng tác giả không muốn đưa file có dữ liệu chứa công thức đang sử dụng thì có đoán tới tết Công Gô cũng chẳng ra làm sao.
Thôi thì cứ để cho tác giả tự suy nghĩ vấn đề thôi.
 
Bởi vậy, để hạn chế rủi ro, ta Replace ";*)" thành ")"
Thầy quả thật đã lường trước tránh sau: để hạn chế rủi ro
Bước 1 chuyển =ROUND( thành zzz(
Bước 2 chuyển ;*) thành )
Bước 3 chuyển zzz thành =
Các bước trên chỉ đúng cho file cụ thể bên dưới
Đụng vào lồng hàm vlookup(.....;0)
gặp rủi do ngay lập tức
 

File đính kèm

hiện tại thì em cũng đã tìm thấy lỗi trong code là do ;*)không thể thay thế =
 
Lần chỉnh sửa cuối:
hiện tại thì em cũng đã tìm thấy lỗi trong code là do ;*)không thể thay thế ="" được, còn ",*)" thì thay bằng "" được. Nhưng em không hiểu tại sao cũng là 1 vấn đề chỉ khác ở định dạng thôi nhưng sao nó lại không hiểu vậy? có ai giả thích dùm em không?

Ký tự (;) mã code là 59
Ký tự (,) mã code là 44
2 ký tự này là khác nhau (44 <> 59) không phải chỉ là định dạng.
nên trong code viết ký tự nào thì trên bảng tính chỉ thay thế được ký tự đó.
 
Lần chỉnh sửa cuối:
"hạn chế rủi ro"
Thực ra chỉ có thể hạn chế đến mức độ nào thôi.
Nếu muốn 100% thì phải parse nguyên cả cái công thức để tìm đúng cái chỗ ";)" hoặc ",)" đối của "ROUND(".
Nếu dùng VBA thì đây là một dịp tốt để bạn nào muốn thử tài RegEx của mình.
 

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

Back
Top Bottom