我根据单元格值中的条件将行从一个工作表移动到另一个工作表。如果满足单元格值,它将移动到另一个工作表。但是当它移动时,我需要它作为值移动。我的一个单元格中有一个公式,我只想在新表格中找到该单元格的值。下面是我移动行的代码的一部分。我的问题是我在哪里添加PasteSpecial或等效代码将其作为值移动?谢谢!
For Each xCell In xRg
If CStr(xCell.Value) = "Pipeline" Then
xCell.EntireRow.Copy Destination:=Worksheets("Pipeline2").Range("A" & B + 1)
xCell.EntireRow.Delete
B = B + 1
答案 0 :(得分:1)
如果你只想要这些值,你可以设置相等的范围。
For Each xCell In xRg
If CStr(xCell.Value) = "Pipeline" Then
Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.Value = xCell.EntireRow.Value
xCell.EntireRow.Delete
B = B + 1
编辑:要保持格式化,
For Each xCell In xRg
If CStr(xCell.Value) = "Pipeline" Then
Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.Value = xCell.EntireRow.Value
xCell.EntireRow.Copy
Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
xCell.EntireRow.Delete
B = B + 1
答案 1 :(得分:0)
我不相信你可以(这很奇怪)但是你必须声明原始工作表,然后复制,然后粘贴,然后回去......这样的事情:
'......
Set ws1 = Activeworksheet
For Each xCell In xRg
If CStr(xCell.Value) = "Pipeline" Then
xCell.EntireRow.Copy Destination:=Sheets("Pipeline2").Range("A" & B + 1)
Sheets("Pipeline2").Activate
Sheets("Pipeline2").Range("A" & B + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ws1.astivate
xCell.EntireRow.Delete
B = B + 1
答案 2 :(得分:0)
在“蝙蝠侠”解决方案的基础上,您可以将实际复制的范围值限制为所需的最小值(即从该行的第1列到最后一个非空单元格):
For Each xCell In xRg
If CStr(xCell.Value) = "Pipeline" Then
With xCell.Parent
With .Range(.Cells(xCell.row, 1), .Cells(xCell.row, .Columns.count).End(xlToLeft))
Worksheets("Pipeline2").Range("A" & B + 1).Resize(.Columns.count).Value = .Value
End With
End With
xCell.EntireRow.Delete
B = B + 1
答案 3 :(得分:0)
这样的事情应该适合你。
Sub copy_paste()
Dim i As Integer
i = 2
Sheets("Sheet1").Select
Range("E2").Select
Do While ActiveCell <> ""
If Range("E" & ActiveCell.Row) <> "" And Range("F" & ActiveCell.Row) <> "" Then
Range("E" & ActiveCell.Row).Copy Sheets(Sheet3).Range("B" & i)
Range("F" & ActiveCell.Row).Copy Sheets(Sheet3).Range("E" & i)
Range("A" & ActiveCell.Row).Copy Sheets(Sheet3).Range("F" & i)
Range("H" & ActiveCell.Row).Copy Sheets(Sheet3).Range("G" & i)
Range("I" & ActiveCell.Row).Copy Sheets(Sheet3).Range("H" & i)
Range("K" & ActiveCell.Row).Copy Sheets(Sheet3).Range("I" & i)
i = i + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub