我需要保持单元格的格式为文本格式,同时确保Excel在其中计算公式。
有办法吗?
答案 0 :(得分:1)
将您的excel公式嵌入文本功能。 = Text(您的函数,“ @”) 更多信息: https://support.office.com/en-us/article/text-function-20d5ac4d-7b94-49fd-bb38-93d29371225c 编辑:如果您的公式没有被求值,那么除了单元格格式外,还有其他原因。
答案 1 :(得分:1)
我解决了!!!
在工作表模块中:
Option Explicit
Private Busy As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Busy Then
Busy = True
If ActiveSheet.ProtectContents Then ActiveSheet.Protect UserInterfaceOnly:=True
CalculateFormula Target.Row, Target.Column
Busy = False
End If
End Sub
在标准模块中:
Option Explicit
Sub CalculateFormula(Row As Long, Column As Long)
Dim Format As String
If Left(Cells(Row, Column).Value, 1) = "=" Then
Format = Cells(Row, Column).NumberFormat
Cells(Row, Column).NumberFormat = "General"
On Error Resume Next
Cells(Row, Column).FormulaLocal = Cells(Row, Column).Value
On Error GoTo 0
Cells(Row, Column).NumberFormat = Format
End If
End Sub
答案 2 :(得分:0)
不清楚是只需要将单元格的格式设置为文本,还是需要将单元格中的公式结果转换为字符串/文本。 Excel公式不影响单元格格式,也不影响单元格格式。日期就是一个很好的例子。日期实际上是一个整数,用于计算从起点开始的天数。第1天是在PC上的1900/01/01(在Mac上,我认为是1905/01/01,但可能是错误的)。如果您在任何默认单元格中输入今天的日期(2018/09/17),Excel会将其标识为日期,更改该单元格的格式并将日期转换为43360。如果将单元格格式更改为常规,您将看到此信息。您会注意到数字是正确对齐的。如果将单元格的格式更改为文本,您仍然会看到43360,但是它将保持左对齐。更重要的是,它仍然是一个数字,您可以使用ISTEXT(A1)
对其进行测试,其中A1是所讨论的单元格。它仍然会返回true。
为了使单元格的内容成为字符串,您只需将公式与“”连接即可。
=Your_Function&""
=1+1&""
话虽如此。如果单元格格式设置为字符串,则无论单元格内部进行何种数学计算,单元格的格式都将保持字符串形式。因此,如果您将A2格式化为文本,然后将= 1 + 1置于其中,则单元格中的结果将为数字2,并且该单元格将被格式化为文本。