如果将单元格设置为文本格式,则不会计算公式

时间:2018-09-17 09:53:50

标签: excel-formula

我需要保持单元格的格式为文本格式,同时确保Excel在其中计算公式。
有办法吗?

3 个答案:

答案 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,并且该单元格将被格式化为文本。