复制/粘贴到另一个工作表上,不包括空白单元格或公式结果 = " " 的单元格



下面的代码按设计工作,但有一个例外:

范围 b4:b100 是来自另一个工作表的查找公式,其中 B34 以下的所有内容都是 #value! 错误,我指定 =iferror(formula(,">

它正在复制生成的",因此下次运行时,它开始粘贴到 B101 而不是 B35 上的目标工作表上。

如何指定"不要在源工作表上存在公式的地方使用目标工作表上带有空白的任何空格"?

Sub COPYTOSAVEDWORK()
Sheets("FORMULAWORKED").Range("B4:Q100").Select
Selection.Copy
Sheets("WORKED_CLAIMS").Cells(Rows.Count, "A").End(xlUp).Offset(1). _
PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, _
SkipBlanks:=True, Transpose:=False
Exit Sub
End Sub

您可以在粘贴的范围内调用.Value=.Value,这将消除带有空字符串的单元格:

Sub Test()
Dim formulaRng As Range
Set formulaRng = ThisWorkbook.Sheets("FORMULAWORKED").Range("B4:Q100")
With ThisWorkbook.Sheets("WORKED_CLAIMS")
Dim nextRow As Long
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
formulaRng.Copy
.Cells(nextRow, "A").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
With .Cells(nextRow, "A").Resize(formulaRng.Rows.Count, formulaRng.Columns.Count)
.Value = .Value
End With
End With
End Sub

按照@BigBen进行价值转移会很好用,但您似乎想复制/粘贴数字并NumberFormat.也许像下面这样的东西会起作用:

Sub Test()
Dim rng As Range
Dim arr As Variant
With Sheets("FORMULAWORKED")
.Range(Join(Filter(.[TRANSPOSE(IF(B4:B100<>"","B"&ROW(B4:B100)&":Q"&ROW(B4:B100),"|"))], "|", False), ",")).Copy
Sheets("WORKED_CLAIMS").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
End Sub

最新更新