将评估字符串数字转换为文本

时间:2021-04-16 03:28:07

标签: excel vba

我想将 c 列中的值复制到 d 列中。但是,列 c 值使用“=EvaluateString(A1)”来获取值。当我尝试使用此代码复制单元格值时

Dim lastRow As Long
lastRow = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Data").Range("C1:C" & lastRow).Copy Destination:=Sheets("Data").Range("D1:D" & lastRow)
Range("D1:D" & lastRow).NumberFormat = @

无法复制数据。 D 列中的大多数单元格值变为 0。我尝试手动复制这些值,但它也变为零。我尝试研究网络,但没有任何类似的问题可供我自己调试。

2 个答案:

答案 0 :(得分:0)

无需复制和粘贴。看看这是否有帮助?

With Sheets("Data")
    .Range("D1:D" & lastRow).NumberFormat = @
    .Range("D1:D" & lastRow).Value = .Range("C1:C" & lastRow).Value
End With

答案 1 :(得分:0)

要执行“标准”复制/粘贴以外的任何操作(即,当您仅使用 Range.Copy Destination:= 时,这与您仅在键盘上使用 Ctrl+C、Ctrl+V 有效相同),您需要使用单独的“复制”和“粘贴特殊”命令。

例如

With Worksheets("Data_Column_RevAA")
    .Range("C1:C" & lastRow).Copy
    .Range("D1:D" & lastRow).PasteSpecial Paste:=xlPasteValues
End With

“PasteSpecial”命令接受控制其行为的不同参数(就像您通过 Excel UI 使用“Paste Special”一样) - 例如。粘贴数值、公式、格式等,以及数学运算(加、减等)

作为参考,请参阅 MS 文档: https://docs.microsoft.com/en-us/office/vba/api/excel.range.pastespecial

相关问题