Tôi đang viết macro trong Excel2003 để tìm tất cả các ô có công thức trong sổ làm việc và xuất địa chỉ và công thức của chúng trong một vài cột trên một trang tính khác.Chuyển đổi công thức của ô thành văn bản bằng cách sử dụng excel vba
Tôi biết tôi có thể hiển thị các công thức cho một tế bào riêng lẻ sử dụng
Public Function ShowFormula(cell As Range) As String
ShowFormula = cell.Formula
End Function
mà làm việc tốt, nhưng vì tôi không muốn có để tìm tất cả các tế bào bằng tay, tôi đã viết macro sau để tìm tất cả chúng cho tôi
Sub Macro2()
Dim i As Integer
Dim targetCells As Range
Dim cell As Range
Dim referenceRange As Range
Dim thisSheet As Worksheet
Set referenceRange = ActiveSheet.Range("CA1")
With referenceRange
For Each thisSheet In ThisWorkbook.Sheets
If thisSheet.Index >= referenceRange.Parent.Index Then
Set targetCells = thisSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
For Each cell In targetCells
If cell.HasFormula Then
.Offset(i, 0).Value = thisSheet.Name
.Offset(i, 1).Value = cell.Address
.Offset(i, 2).Value = CStr(cell.Formula)
i = i + 1
End If
Next
End If
Next
End With
End Sub
Tìm tất cả các ô, nhưng thay vì hiển thị công thức dưới dạng văn bản, danh sách sẽ hiển thị kết quả công thức.
Tôi thiếu gì để xuất công thức dưới dạng văn bản thay vì công thức?
Thanks for the tip để tăng tốc mọi thứ! Câu hỏi nhanh về câu trả lời của bạn. Trong khi nó hoạt động, nó xuất ra ''= A1 + B2 + C3 + ...'. Tôi đang lên kế hoạch cắm các công thức đó vào các ô khác nhau sau và điều này sẽ yêu cầu xóa "" ". Có cách nào để thực hiện điều này mà không cần phải định dạng văn bản không? Tôi thực sự tự hỏi tại sao nó hoạt động với UDF chứ không phải trong macro ...? –
Xóa "" "là tầm thường' Phải (s, Len (s) - 1) 'nhưng tôi lấy ý kiến của bạn. Bạn có thể thử đặt định dạng ô đích thành Văn bản trước khi dán công thức chưa sửa đổi và xem cách thức hoạt động. –
Định dạng văn bản đã làm điều đó. Rất đơn giản, nhưng nó không xảy ra với tôi :(Rất cám ơn! –