VBA,excel中选择特定内容复制粘贴

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37408031/article/details/78506922

重点是这个:End(xlDown)、End(xlUp)、End(xltoLeft)、End(xltoRight),就是从某个单元格开始,向下/上/左/右 找到第一个有数据的单元格。
sheet1

   A    |   B
  id    |  公式列
  001   |   20
  002   |   11
  003   |    0

sheet2原始

   A   |   B        |     C
   id  |  公式列     |   数值列
  004  |   12       |     12
  005  |   17       |     17

sheet2宏后

   A     |   B         |     C
   id    |  公式列      |   数值列
  004    |   12        |     12
  005    |   17        |     17
  003    |    0        |      0

我要把sheet1的B:B列是0的A:A列筛选出来,再复制:

    Sheets("sheet1").Select
    ActiveSheet.Range("$B$1:$B$10000").AutoFilter Field:=3, Criteria1:=0
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

再粘贴到sheet2的A:A列最下面:

    Sheets("sheet2").Select
    Range("A1").Select
    Selection.End(xlDown).Select
    Range("A" & Range("A1").End(xlDown).Row + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

把sheet2的第二列公式填充下来:

    Sheets("sheet2").Select
    ROW1 = Range("A" & Rows.Count).End(xlUp).Row
    Range("B2").Copy
    Range("B2:B" & ROW1).PasteSpecial Paste:=xlPasteFormulas
    Application.CutCopyMode = False

把填充的公式显示的数值复制到C:C列

    Sheets("sheet2").Select
    ROW2 = Range("C" & Rows.Count).End(xlUp).Row
    Range(Cells(ROW2 + 1, 2), Cells(ROW1, 2)).Select
    Selection.Copy
    Range(Cells(ROW2 + 1, 3), Cells(ROW1, 3)).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
展开阅读全文

关于Excel复制粘贴的问题

05-06

小弟碰到一个小问题,想请教各位大大。rnrn整个应用的场景是这样,在选中某个单元格的时候,对worksheet中的一些控件visible属性进行设置,这个设置完成之后,要求还能保留原来剪贴板中的内容,并且能够正常粘贴。rnrn但是由于对控件的操作,剪贴板中的内容会自动被清掉,因此我做了如下的处理。rnrn'---------------------------------------------------------------rnPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)rnrnDim myobj As DataObjectrnSet myobj = New DataObjectrnmyobj.GetFromClipboardrnrn'以下部分是对控件的操作rnIf CommandButton1.Visible = False Thenrn CommandButton1.Visible = TruernElsern CommandButton1.Visible = FalsernEnd Ifrnrn'如果原来剪贴板中的内容不为空,则重新写入到剪贴板中rnIf myobj.GetText <> "" Thenrnmyobj.PutInClipboardrnEnd IfrnrnSet myobj = NothingrnrnEnd Subrn'---------------------------------------------------------------rn中间对控件操作部分,我简化成显示一个button,但对于copy & paste功能来说,效果还是一样。rn函数改成这样之后,可以将剪贴板的内容保留下来。但问题就在这个时候出现了。rnrn本来如果你在excel表格中复制了一个单元格,然后选定多个单元格作为粘贴的目标区域,系统会自动把所有的这些目标单元格都填上内容。但是如果用了我前面那个函数,会提示源单元格和目标单元格大小不一样,如果强制粘贴,只能粘贴到第一个目标单元格中。rnrn[b]我要请教的问题就是如何能够通过VBA,将源单元格里的内容,粘贴到所有目标单元格.[/b] 论坛

没有更多推荐了,返回首页