VBA代码的工作方式不同

我有这3个代码,工作不同,但提供类似的结果。 目标是我在一个单独的列中只有来自填充单元格的值,而没有空格

  1. 此代码仅复制I10:I61公式的结果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 
  2. 这个代码拷贝没有公式的值

     With Worksheets("Calculator") Set VisRng = .Range("D10:D61").SpecialCells(xlCellTypeConstants) VisRng.Copy Worksheets("Graphs").Range("B2").PasteSpecial xlValues End With 
  3. 这应该是从公式复制文本结果。 这是行不通的。 公式还返回“”,我不需要。

     With Worksheets("Calculator").Range("K10:K61") .Offset(, 0).SpecialCells(xlCellTypeFormulas, xlTextValues).Copy Worksheets("Graphs").Range("A2").PasteSpecial SkipBlanks:=True, Paste:=xlPasteValues End With 

但是,最后一段代码不起作用。 它应该只复制和粘贴填充单元格,而不是一次emty(包含“”)。 现在它复制并粘贴一切。 我怎样才能使它工作? 结果是:

 KA Paris Paris Amsterdam Amsterdam 

我需要它

 A Paris Amsterdam 

由于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