我有一个链接到SQL数据库的表,我用它来创建一些报告。问题是数字是文本,我必须每次都将它们转换为数字, 我写了一个宏来创建报告,但我很难转换数字。我试图将整个表格乘以一个(表格丢失了链接,但这不是一个问题,因为我只是将信息复制到另一个工作簿,他们关闭桌子而没有保存)并且当我这样做时它起作用了manualy ,但是当我通过宏做它时它将无法工作。我可以看到它乘以1但数字仍然是文本。
由于我的表很大,尝试转换每个单元格不是一个选项,它需要永远运行每个单元格并使用CStr函数。
我的代码:
Range("B2").Copy
Range("A4", Range("AC4").End(xlDown)).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
有什么建议吗?
答案 0 :(得分:3)
xlDown
可能非常不可预测。不要使用它。实际上找到最后一行,然后创建您的范围,然后将其用于您的操作。
同样只是更改格式不会将这些转换为数字。您必须复制F2-Enter
行为。
尝试此操作(已完成测试)
Sub Sample()
Dim ws As Worksheet
Dim Rng As Range, acell As Range
Dim lRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lRow = .Range("AC" & .Rows.Count).End(xlUp).Row
Set Rng = .Range("A4:AC" & lRow)
.Range("B2").Copy
Rng.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
Rng.NumberFormat = "0" ' OR "0.00" as applicable
For Each acell In Rng
acell.Formula = acell.Value
Next
End With
End Sub
<强> SCREENSHOT 强>