【问题标题】:When I paste a column of numbers using PasteSpecial, it pasts them as text instead of numbers. How do I paste them in number format?当我使用 PasteSpecial 粘贴一列数字时,它会将它们作为文本而不是数字粘贴。如何以数字格式粘贴它们?
【发布时间】:2019-07-19 07:48:46
【问题描述】:

我正在尝试复制一张纸中的一列数字并将它们粘贴到另一张纸的另一列中。当我粘贴数字列时,即使原始表格中它们的格式是数字,它也会将它们粘贴为文本。我能做些什么?

我尝试使用几种不同的 PasteSpecial 格式,还尝试录制一个宏,在其中将格式从文本转换为数字,但这些都不起作用。

Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy

        Worksheets("Data").Activate
        Range("I1").Select
        ActiveCell.Offset(NumRowsToSkip, 0).Select
        ActiveCell.PasteSpecial Paste:=xlPasteValuesAndNumberFormats

我希望将数字列粘贴为数字,但它们被粘贴为文本,这会弄乱我电子表格中其他地方的方程式。

【问题讨论】:

  • 在粘贴之前(或之后)将目标列格式化为数字,它应该保持格式...?
  • 嘿!谢谢你的评论!不幸的是,在粘贴之前格式化目标列不起作用。我可以在粘贴后将目标列格式化为数字并且它可以工作,但是如果我必须返回并手动格式化列,那么首先自动化它有什么意义呢?
  • 好的,我会发布一些东西。你有很多选择应该被核弹。等等。

标签: excel vba


【解决方案1】:

你有很多不需要的选择。您应该能够在粘贴之前设置格式,但是下面的代码会自动将整个列格式化为您在宏中指定的任何数字格式。

Sub QuickExample()
'Set your number format the way you want. You can find this in formatting/custom to see whatever you've selected
'The below example is with commas, no decimals, red for negative.
Const YourPreferredNumberFormat As String = "#,##0_);[Red](#,##0)"


    Range(Selection, Selection.End(xlDown)).Copy

    With Worksheets("Data").Range("I1")
        .Offset(NumRowsToSkip, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        .EntireColumn.NumberFormat = YourPreferredNumberFormat
    End With

End Sub

【讨论】:

  • 非常感谢!我肯定在努力让我的代码更简洁高效。我尝试了这个和几个不同的变体,但我仍然遇到同样的问题!如果我找到解决方案,我会在这里发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多