【问题标题】:Saving number as text, how to automate it将数字保存为文本,如何使其自动化
【发布时间】:2018-01-18 12:33:42
【问题描述】:

我在一个单元格中有一个7702216772 号码。如果我在第一个数字前添加' 并单击Enter Excel 将数字转换为文本并在单元格的左上方放置一个绿色三角形:

我有很多行相似的数字,所有这些都需要转换为文本。但是,单击每个符号并在第一个符号之前添加 ' 并单击 Enter 会花费很多时间。有没有办法以编程方式做到这一点?

我尝试使用公式:="'"&H4,但它没有达到预期的效果 - 绿色三角形从未出现在结果单元格上。

我也尝试将单元格格式设置为文本,但在这种情况下也没有出现绿色三角形。

我需要绿色三角形出现在左上角,就像图片中一样!

【问题讨论】:

  • 这是一个手机号码,一开始就去掉 0 吗?因为如果是这样,只需在粘贴之前将列更改为文本值。
  • 在单元格 G4 中输入公式=H4&"" 并根据需要复制下来。 Copy >> Paste Special >> Values 应该可以满足您的需求。
  • @Kyoujin 第一个数字不是零。我尝试将列更改为文本,但不起作用。虽然它说列的格式是文本,但粘贴的数字在左上角缺少绿色三角形。

标签: vba excel


【解决方案1】:

如果您的所有号码都在一个列中,则以下代码将执行此操作:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A

For i = 1 To LastRow 'loop from row 1 to last
    ws.Cells(i, "A").Value = "'" & ws.Cells(i, "A").Value 'add the ' before the number
Next i
End Sub

将“A”更改为您正在使用的列。

【讨论】:

    【解决方案2】:

    只需Select 您希望处理的单元格并运行这个简短的宏:

    Sub Textify()
        Dim rng As Range, r As Range
        Set rng = Selection.Cells.SpecialCells(2, 1)
        For Each r In rng
            r.Value = "'" & r.Value
        Next r
    End Sub
    

    【讨论】:

      【解决方案3】:

      非 VBA 答案;我在这个答案中使用了 G 列,但这取决于你的数字在哪里。您必须更改单元格,但我认为您会没事的。

      • 在空单元格中,输入公式:="'"&G4
      • 使用填充句柄或Ctrl+D 将其填充到G 列值的长度。
      • 选择整个 G 列的值并将它们复制到剪贴板
      • 在G列中选择相同的范围,右键单击,选择Paste Special,然后选择Values

      【讨论】:

        【解决方案4】:

        我已经测试了好几次,它总是有效的

        Cells(xx, xx).FormulaR1C1 = "'" & Cells(xx, xx).Value
        

        同样适用于 ActiveCell 或任何你喜欢的东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-03
          • 1970-01-01
          • 2014-04-29
          • 2012-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多