【问题标题】:EXCEL > how to refresh a cell to apply new cell format?EXCEL > 如何刷新单元格以应用新的单元格格式?
【发布时间】:2017-11-23 12:15:30
【问题描述】:

我在一个单元格中有一个值,比如123456789.12345。默认情况下,excel 显示为123456789.1。我需要查看逗号后的所有数字,所以我将单元格格式更改为自定义> @

要应用此更改,我需要刷新单元格,例如选择它并按F2,然后按 Enter。但是如何将此刷新应用于列或范围?

如果可能,请不要使用 VBA。

【问题讨论】:

标签: vba excel


【解决方案1】:

你可以加快这个过程:

没有 VBA 选项

选择列并转到数据功能区,然后单击文本到列。

选择分隔并单击下一步。

取消选中所有分隔符,然后单击下一步。

选择文本选项并按完成

:

所有单元格的数字格式都会更新。

这个技巧有点小技巧,但它确实有效。它所做的是从每一行中获取所有值,然后自动将它们重新输入到单元格中。因此,此技巧不适用于公式单元格。如果您有公式,按 F9 应该重新计算工作表并更新数字格式。但根据我的经验,我在公式方面没有遇到过这个问题。

VBA 选项

只需使用此代码创建一个 VBA:

  Sub Oval1_Click()
    Dim i As Integer
    i = 1
    Do Until Cells(i, 1) = 0
     Cells(i, 1).NumberFormat = "@"
     Cells(i, 1).Select
     SendKeys "{F2}", True
     SendKeys "{ENTER}", True
     i = i + 1
   Loop
 End Sub

请记住,要使其正常工作,您需要一个名为 Oval1_click 的“按钮”,或者只需将代码添加到您创建的按钮中。

解释:!

1:首先我们在按钮单击时启动代码

  Sub Oval1_Click()

然后我们声明一个变量,该变量将用作单元格行的增量值。

    Dim i As Integer
    i = 1

我们在 A1 中转换的第 1 行第 1 列 (a) 中开始循环,前提是值不等于 0。

    Do Until Cells(i, 1) = 0

我们将@格式分配给选定的行(A1)

     Cells(i, 1).NumberFormat = "@"

我们选择,按 F2,然后按 Enter,到该行 (A1)

     Cells(i, 1).Select
     SendKeys "{F2}", True
     SendKeys "{ENTER}", True

我们增加 i 值以便它可以改变行

     i = i + 1

如果我们到达该列中的一个空单元格,我们将完成循环和代码

   Loop
 End Sub

就是这样。

【讨论】:

    【解决方案2】:
    • 按照您想要的方式设置第一个单元格的格式。
    • 复制格式正确的单元格。
    • 选择其他单元格。
    • 鼠标右键 -> 选择性粘贴(或 Ctrl+Alt+ V)。
    • 选择格式 RadioBox。
    • 点击确定按钮。
    • 按 Enter。

    【讨论】:

    • 这不是问的吗?还有没有VBA就没有办法刷新单元格?另一种解决方案是在插入值之前更改该单元格的格式。将单元格格式化为:0.#0' 并根据您想要的小数点后的数字输入哈希数 #,如果您想要 10 个十进制数,则输入 10 #
    • 不幸的是,这无济于事,因为我通过 excel 打开 XML 文件,它会解析这些文件并将它们显示在具有默认单元格格式的新工作簿上
    • @sku144 - 我的理解是,在第一点之前,您可以按照自己的方式修复格式。
    【解决方案3】:
    • 选择一列中的单元格并设置新格式
    • 转到数据 --> 文本到列,然后按完成

    这应该刷新选定的单元格并应用新格式。

    【讨论】:

      【解决方案4】:
      Sub ForceAsText()
      
          Dim cel As Range
          Dim selectedRange As Range
      
          Set selectedRange = Application.Selection
      
          For Each MyCell In selectedRange.Cells
              MyCell.NumberFormat = "@"
              If MyCell.HasFormula Then
                  Dim Val As String
                  Val = MyCell.Formula
                  MyCell.Value = Val
              End If
          Next MyCell
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-24
        • 2021-04-20
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多