2013-07-25 68 views
10

Tôi có nhiều ô khắp nơi trên một trang tính trông giống như =((E9-E8)/E8). Tôi muốn sử dụng hai giá trị đầu tiên để đi vào công thức mới này, (EXP((LN(E9/E8)/14.32))-1).Excel đơn giản tìm và thay thế cho các công thức

Làm cách nào để thay đổi tất cả thành công thức mới trong một lần giảm?

+0

* khắp nơi * - vì vậy không phải bất kỳ cột hoặc hàng nào? Khoảng bao nhiêu là * tất cả *? – pnuts

+0

Tất cả các nơi có nghĩa là có ba cột khác nhau trong đó công thức sẽ xảy ra với tổng số là 31 lần. Tôi đã chuyển sang R1C1 vì cấu trúc giống nhau trong mọi trường hợp. Xem câu trả lời của tôi. – Tomulent

+0

Chuyển sang định dạng RC là cách để thực hiện điều này trên quy mô lớn nhưng không đáng giá cho (như tôi nghi ngờ) có quy mô nhỏ. Tâm trí bạn, tôi sẽ xem xét 31 quy mô nhỏ! Cho exa, ple các câu trả lời khác, tôi nghĩ rằng đây là một câu hỏi xứng đáng có một điểm số tốt, vì vậy +1 của tôi - mặc dù điều đó chỉ trả về 0 Tôi sợ. – pnuts

Trả lời

12

Nếu công thức giống hệt nhau, bạn có thể sử dụng Tìm và thay thế bằng Match entire cell contents đã chọn và Look in: Formulas. Chọn phạm vi, đi vào Tìm và Thay thế, tạo các mục nhập của bạn và `Thay thế Tất cả.

enter image description here

Hoặc bạn có nghĩa là có một số công thức với hình thức này giống nhau, nhưng tài liệu tham khảo tế bào khác nhau? Nếu vậy, thì một cách để đi là biểu thức chính quy khớp và thay thế. Các biểu thức chính quy không được xây dựng trong Excel (hoặc VBA), nhưng có thể được truy cập thông qua thư viện VBScript Regular Expressions của Microsoft.

Hàm sau đây cung cấp khả năng khớp và thay thế cần thiết. Nó có thể được sử dụng trong một chương trình con sẽ xác định các ô có công thức trong phạm vi được chỉ định và sử dụng các công thức làm đầu vào cho hàm. Đối với các chuỗi công thức phù hợp với mẫu bạn đang tìm kiếm, hàm sẽ tạo ra công thức thay thế, sau đó có thể được viết lại thành trang tính.

Function RegexFormulaReplace(formula As String) 
    Dim regex As New RegExp 
    regex.Pattern = "=\(\(([A-Z]+\d+)-([A-Z]+\d+)\)/([A-Z]+\d+)\)" 
' Test if a match is found 
    If regex.Test(formula) = True Then 
     RegexFormulaReplace = regex.Replace(formula, "=(EXP((LN($1/$2)/14.32))-1") 
    Else 
     RegexFormulaReplace = CVErr(xlErrValue) 
    End If 
    Set regex = Nothing 
End Function 

Để chức năng hoạt động, bạn cần phải thêm tham chiếu vào thư viện Microsoft VBScript Regular Expressions 5.5. Từ tab Developer của dải băng chính, chọn VBA và sau đó References từ thanh công cụ chính. Cuộn xuống để tìm tham chiếu đến thư viện và chọn hộp bên cạnh thư viện.

+0

Có một số công thức với cùng một hình thức nhưng tham chiếu ô khác nhau. – Tomulent

1

Sử dụng lệnh tìm và thay thế có thể truy cập thông qua ctrl + h, đảm bảo bạn đang tìm kiếm thông qua các chức năng của ô. Sau đó, bạn có thể ký tự đại diện để chứa bất kỳ độ lệch nào của công thức. * cho # ký tự đại diện,? cho ký tự đại diện charcter, và ~? hoặc ~ * để tìm kiếm? hoặc là *.

+0

Tôi mới làm điều này vì vậy tôi không hoàn toàn chắc chắn cách thức hoạt động. Làm thế nào tôi sẽ đại diện cho các công thức tôi đưa vào câu hỏi của tôi bằng cách sử dụng ký tự đại diện? Một lần nữa, tôi có 30 công thức trông giống như tất cả với các tham chiếu khác nhau mà tôi muốn thay đổi để trông giống như công thức thứ hai. – Tomulent

+0

Thay đổi tất cả các tham chiếu ô thành ký tự đại diện sẽ giống như sau; Tìm: = ((? * -? *) /? *) Thay thế: = (EXP ((LN (? * /? *)/14.32)) - 1) Nếu bạn cần thêm ký tự đại diện, tôi hy vọng điều này sẽ phân phát như một ví dụ tốt cho bạn. – Mason

+0

Thật không may là không hoạt động. May mắn thay, tôi đã có thể giải quyết vấn đề theo một cách khác. Xem câu trả lời của tôi nếu bạn tò mò – Tomulent

6

Hóa ra giải pháp là chuyển sang Tham chiếu ô R1C1. Bảng tính của tôi được cấu trúc theo cách mà mọi công thức đều có cấu trúc giống nhau chỉ là các tham chiếu khác nhau. May mắn, mặc dù họ đã luôn vị trí cùng một cách

=((E9-E8)/E8) 

trở thành

=((R[-1]C-R[-2]C)/R[-2]C) 

(EXP((LN(E9/E8)/14.32))-1) 

trở thành

=(EXP((LN(R[-1]C/R[-2]C)/14.32))-1) 

Trong R1C1 Reference, mỗi công thức là giống hệt nhau để tìm và đại diện ren yêu cầu không có ký tự đại diện. Cảm ơn các bạn đã trả lời!

1

Cách tôi thường xử lý việc này là với phần mềm thứ hai. Đối với Windows, tôi sử dụng Notepad ++, cho OS X Tôi sử dụng Sublime Text 2.

  1. Trong Excel, nhấn Control + ~ (OS X)
  2. Excel sẽ chuyển đổi tất cả các giá trị cho phiên bản công thức của họ
  3. CMD + A (Tôi thường làm điều này hai lần) để chọn toàn bộ sheet
  4. sao chép tất cả nội dung và dán chúng vào Notepad ++/Sublime văn bản 2
  5. Tìm/Thay thế nội dung công thức của bạn ở đây
  6. sao chép nội dung và dán lại vào Excel, xác nhận bất kỳ vấn đề về sự khác biệt kích thước tế bào
  7. Điều khiển + ~ để chuyển về chế độ giá trị