谢谢你阅读我的问题。
我有一个表[ws1(A4:Q500)]包含数据,而Q列后面有公式。因此,我无法复制整行,只能复制文本中的特定范围。
Q列是定义数据是否属于周期的公式,即11月16日至11月30日的数据。标志如下:
0
1 = 16/11 - 30/11
2.
这里的目标是将带有标志“1”的ws1数据复制到[ws2(A2:P200)],然后删除带有标志“1”和“2”的ws1数据
相信复制和删除的规则相当相似,我尝试先做复制部分
Sub PlotGraph()
Dim i As Integer
Dim j As Integer
Dim lastrow As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Data")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Analysis")
j = 2
lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To lastrow
If ws1.Cells(i, 17) = 1 Then
ws1.Range(Cells(i, 1), Cells(i, 16)).Copy
ws2.Range(Cells(j, 1), Cells(j, 16)).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=True, _
Transpose:=False
j = j + 1
End If
Next i
End Sub
调试函数说它是错误的
ws1.Range(Cells(i, 1), Cells(i, 16)).Copy
我努力做修改,但它仍然不起作用,请帮我一点:(非常感谢。
ws2. Range(Cells(j,1), Cells(j,16))。PasteSpecial
没有充分引用属于ws2
的范围。范围内的Cells(...)
可以属于任何工作表;它们必须专门属于ws2
。ws1
也是如此。
ws1.Range(ws1.Cells(i, 1), ws1.Cells(i, 16)).Copy
ws2.Range(ws2.Cells(j, 1), ws2.Cells(j, 16)).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=True, _
Transpose:=False
自动过滤方法可以为批量值传输节省一些时间。
Sub PlotGraph()
Dim i As Long, j As Long, lr As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ThisWorkbook.Sheets("Data")
Set ws2 = ThisWorkbook.Sheets("Analysis")
j = 2
With ws1
lr = .Cells(Rows.Count, 1).End(xlUp).Row
With .Range(.Cells(3, 1), .Cells(lr, 17)) 'Range(A3:Q & lr) need header row for autofilter
.AutoFilter field:=17, Criteria1:=1
With .Resize(.Rows.Count - 1, 16).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Cells.Copy _
Destination:=ws2.Cells(j, 1)
'optional Copy/PasteSpecial xlPasteValues method
'.Cells.Copy
'ws2.Cells(j, 1).PasteSpecial Paste:=xlPasteValues
'▲ might want to locate row j properly instead of just calling it 2
End If
End With
End With
End With
End Sub
我注意到你正在使用一个范围。粘贴使用xlPasteValues的特殊方法。如果您需要仅值传输,那么这是可以接受的。
这应该真的很简单,但我一直在拖网论坛和答案数小时来寻找答案,但没有运气,所以我(不情愿地)创造了一个我自己的问题。 我要做的只是简单地创建一个新工作簿,并将另一个工作簿的范围粘贴到该工作簿中。听起来很简单..? 我原来的工作簿,让我们叫Book1。我试图创建一个新的工作簿,Book2,我将把单元格A1:B10的值复制到其中。 以下是我代码的一个版本(从第一册打开开始): 这会给出一个“Range类
在一个编码的UI测试中,我试图使用range.copy从excel复制一个动态范围,并通过ctrl+V将其粘贴到wpf网格中。
我是VSCode编辑器的新手。 以前使用atom时,将光标放在行尾并按Ctrl C键将复制该行。将光标放在另一行的末尾,然后按Ctrl V键将其粘贴到该行的下面。 似乎在VSCode中,我可以以相同的方式复制一行,但当我以相同的方式粘贴时,它会将该行放在所选行上方。当我的光标位于行尾时,这似乎非常违反直觉。 有什么地方可以改变这个的设置吗? 编辑:我没有试图复制一行。我想复制一行并粘贴到另一个文件
问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的
我可以使用'yy'和'p'复制并粘贴到我的Vim文件中,但是当我从外部复制一些Python代码并尝试在我的Vim文件中执行'p'时,它只会将最后复制的内容粘贴到我的Vim中。 有没有反正我可以同步我的vim和系统剪贴板??