vba 如何将单元格复制到最后一行并粘贴到另一个工作表?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10642192/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-11 16:11:34  来源:igfitidea点击:

How to copy cells to last row and paste to another sheet?

excel-vbavbaexcel

提问by Matt Ridge

I have an ActiveSheet script, in where I take raw data move the data to rows Q:V. I have a VBA script that runs and shows where the last row is, in this case the last row is 77.

我有一个 ActiveSheet 脚本,在那里我将原始数据移动到行 Q:V。我有一个运行并显示最后一行的 VBA 脚本,在这种情况下,最后一行是 77。

lastrow = .Cells(.Rows.Count, "Q").End(xlUp).Row

I want to have it where it takes from Q to V last row, copy, and paste it into sheet 1...

我想把它放在从 Q 到 V 最后一行的位置,复制并粘贴到第 1 页...

I am guessing it will look like this, but I want to verify here first... since my normal sites I go to are down for maintenance for some reason.

我猜它看起来像这样,但我想先在这里验证...因为我去的正常站点由于某种原因停机维护。

Sub test()
         Dim wsPOD As Worksheet
    Dim wsPOT As Worksheet
    Dim wsPOA As Worksheet
    Dim cel As Range
    Dim lastrow As Long, i As Long, Er As Long

    Set wsPOD = Sheets("PO Data")
    Set wsPOT = Sheets("PO Tracking")
    Set wsPOA = Sheets("PO Archive")

        With ActiveSheet
            .AutoFilterMode = False
            Intersect(.UsedRange, .Columns("A")).Cut .Range("Q1")
            Intersect(.UsedRange, .Columns("D")).Cut .Range("R1")
            Intersect(.UsedRange, .Columns("C")).Cut .Range("S1")
            Intersect(.UsedRange, .Columns("B")).Cut .Range("T1")
            Intersect(.UsedRange, .Columns("G")).Cut .Range("U1")
            Intersect(.UsedRange, .Columns("F")).Cut .Range("V1")
            lastrow = .Cells(.Rows.Count, "N").End(xlUp).Row
            Intersect (.UsedRange.Range("Q:V" & lastrow).Copy)
            Intersect (wsPOT.Range("B3:H" & lastrow).PasteSpecialxlPasteFormats)
         End With
End Sub

This obviously doesn't work, if someone can help me it be appreciated.

这显然不起作用,如果有人可以帮助我,将不胜感激。

回答by Siddharth Rout

Is this what you are trying>

这是您要尝试的吗>

 With ActiveSheet
    .AutoFilterMode = False
    '
    '~~> Rest of the code
    '
    lastRow = .Range("N" & Rows.Count).End(xlUp).Row
    .Range("Q1:V" & lastRow).Copy
    wsPOT.Range("B3").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
 End With

xlPasteFormatswill only paste the formats and not the value. If you want to paste value then change xlPasteFormatsto xlPasteValues

xlPasteFormats只会粘贴格式而不是值。如果要粘贴值,则更xlPasteFormats改为xlPasteValues

回答by RAJU

Option Explicit
Sub copylocation()
  Dim EC As Long
  Dim X As Long
  Dim Y As Long
  X = Range("B1").End(xlUp).Offset(1, 0).Row
  EC = Range("b1").End(xlToLeft).Offset(0, X).Column
  Windows("Book2").Activate
  Range("b1:AB" & EC).Select
  Selection.Copy
  Windows("Book1").Activate
  Range("b1").Select
  ActiveSheet.Paste
End Sub