我有这3段代码,它们的工作方式不同但却提供了类似的结果。目的是我在一个单独的列中只有填充单元格中的值,而没有空格
此代码仅复制I10:I61
中公式的结果。公式也返回“”,我不需要。
With Worksheets("Calculator").Range("I10:I61")
.Offset(, 0).SpecialCells(xlCellTypeFormulas, xlNumbers).Copy
Worksheets("Graphs").Range("F2").PasteSpecial SkipBlanks:=True, Paste:=xlPasteValues
End With
此代码复制值,其中没有公式
With Worksheets("Calculator")
Set VisRng = .Range("D10:D61").SpecialCells(xlCellTypeConstants)
VisRng.Copy
Worksheets("Graphs").Range("B2").PasteSpecial xlValues
End With
这应该从公式中复制文本结果。这是行不通的。公式也返回“”,我不需要。
With Worksheets("Calculator").Range("K10:K61")
.Offset(, 0).SpecialCells(xlCellTypeFormulas, xlTextValues).Copy
Worksheets("Graphs").Range("A2").PasteSpecial SkipBlanks:=True, Paste:=xlPasteValues
End With
但是,最后一段代码不起作用。它应该只复制和粘贴填充的单元格而不是emty一次(包含“”)。现在它复制并粘贴一切。我怎样才能使它工作?结果是:
K A
Paris Paris
Amsterdam Amsterdam
我需要它
A
Paris
Amsterdam
答案 0 :(得分:2)
由于excel将""
的公式结果视为文本,请尝试使用此方法。
Dim vData as Variant
vData = Worksheets("Calculator").Range("K10:K61")
Dim i as Integer
For i = Lbound(vData) to uBound(vData)
If len (vData(i,1)) And Not IsNumeric(vData(i,1)) Then
With Worksheets("Graphs")
.Range("A" & .Rows.Count).End(xlUp).Offset(1).Value = vData(i,1)
End With
End If
Next