替换函数将文本格式转换为数字格式。是excel bug吗?

替换函数将文本格式转换为数字格式。是excel bug吗?,excel,vba,text,replace,numbers,Excel,Vba,Text,Replace,Numbers,我不是excel或Google的新手,但这种行为令人惊讶/不合逻辑: 将列“A”格式化为文本 在单元格中写入一些数字,例如74到A1、A2和A3-它们的格式为文本,它们不求和,看起来和预期的一样 转到查找-将74替换为75 在replace75的总结之后,它们的行为就像数字一样,即使单元格的格式仍然是文本!我搞不懂为什么 这个“bug”(?)在VBA中给我带来了一些麻烦,因为以下代码无法将数据转换为预期结果(“文本格式的数字”),我无法将其转换为文本格式: Selection.Replace W

我不是excel或Google的新手,但这种行为令人惊讶/不合逻辑:

  • 将列“A”格式化为文本
  • 在单元格中写入一些数字,例如74到A1、A2和A3-它们的格式为文本,它们不求和,看起来和预期的一样
  • 转到查找-将74替换为75
  • 在replace75的总结之后,它们的行为就像数字一样,即使单元格的格式仍然是文本!我搞不懂为什么 这个“bug”(?)在VBA中给我带来了一些麻烦,因为以下代码无法将数据转换为预期结果(“文本格式的数字”),我无法将其转换为文本格式:

    Selection.Replace What:="74", Replacement:="75"
    
    当我尝试以下任何一种方法时,都会得到相同的结果:

    Selection.Replace What:="74", Replacement:=Format("75", "@")
    
    Selection.Replace What:="74", Replacement:=CStr("75")
    
    Selection.Replace What:="74", Replacement:="75"
    Selection.NumberFormat = "@"
    
    唯一有效的解决方案是:

    Selection.Replace What:="74", Replacement:="'75"
    
    但我不想让那个撇号出现在牢房里

    有没有其他方法可以将单元格中看起来像数字的文本替换为另一个看起来像数字的文本? 我觉得花一个小时思考这些基本问题是愚蠢的

    编辑: 即使这种使用命名范围的方法也会将75作为数字(单元格格式为文本):


    你需要描述一下你是如何得到这个的。尝试运行以下任一选项:

    Sub BugDemo()
    With ActiveCell
        .Clear
        .NumberFormat = "@"
        .Value = "101"
        .Replace What:="0", Replacement:="7"
    End With
    End Sub
    
    Sub BugDemo2()
    With ActiveCell
        .Clear
        .NumberFormat = "@"
        .Value = "101"
        .Replace What:="101", Replacement:="7"
    End With
    End Sub
    

    替换后,值仍保留为Text

    您能更好地解释一下这句话吗<代码>A2和A3-它们被格式化为文本,它们没有汇总,看起来与预期的一样好?您所说的“汇总”是什么意思?如果单元格内容格式为文本,则无法对其执行数学运算。Excel状态栏不显示单元格A1到A3的“和”。这就是我需要的。但是,在replace函数之后,单元格内容的行为类似于数字,即使单元格格式为文本。这是错误的。谢谢您的建议,但这只确认了我的发现-BugDemo的结果是以文本格式显示的单元格,但其值171是number。BugDemo2导致活动单元格被格式化为文本,但它的值7是数字。当我说“是数字”时,意味着你可以用它进行数学运算。这样的171不等于171,它被输入到另一个格式为文本的单元格。一点也不。从一张空的工作表开始……将A1格式化为文本……在A1中输入1……在A2中输入公式=A1+1…………这个公式可以产生2这很奇怪,@Gary的学生——这是怎么回事:从一张空的工作表开始……将A1格式化为文本……在A1中输入1……在A2中输入公式=和(A1)+1…………这个公式可以产生1。。。这是我在单元格A1中需要的。但是,一旦我将单元格A1(alt-e-e)中的“1”替换为“1”,A2中的公式。。和(A1)+1突然产生2。。。这是我不想要的,在一个非常简单的例子中
    Sub BugDemo()
    With ActiveCell
        .Clear
        .NumberFormat = "@"
        .Value = "101"
        .Replace What:="0", Replacement:="7"
    End With
    End Sub
    
    Sub BugDemo2()
    With ActiveCell
        .Clear
        .NumberFormat = "@"
        .Value = "101"
        .Replace What:="101", Replacement:="7"
    End With
    End Sub