excel - 为名为 xxxx 的每一行复制粘贴单元格范围

标签 excel vba range copy-paste

enter image description here

我有这个工作表,我想移动(通过复制和粘贴)几周的范围以及称为计划的每一行。下面是我正在使用的一个简单脚本,但如果可能的话,我想创建它的循环?

基本上我想将范围从 E 列复制并粘贴到 O 列。将其粘贴到 D 列中,然后返回到 O 列并删除那里的任何值。

enter code here

<Range("E2:O2").Select    
Selection.Copy    
Range("D2").Select    
ActiveSheet.Paste    
Range("O2").Select    
Selection.ClearContents    


Range("E4:O4").Select    
Selection.Copy    
Range("D4").Select    
ActiveSheet.Paste    
Range("O4").Select    
Selection.ClearContents>   

最佳答案

剪切粘贴

剪辑版

Sub CutPaste()

    Const cSheet As Variant = "Sheet1"      ' Worksheet Name/Index
    Const cFirstS As Variant = "E"          ' Source First Column Letter/Number
    Const cLastS As Variant = "O"           ' Source Last Column Letter/Number

    Const cFirstT As Variant = "D"          ' Target First Column Letter/Number

    Const cFirstRow As Long = 1             ' First Row Number
    Const cCriteria As Variant = "B"        ' Criteria Column Letter/Number
    Const cStrCriteria As String = "Plan"   ' Criteria String

    Dim lastRow As Long   ' Last Row Number
    Dim i As Long         ' Row Counter

    With ThisWorkbook.Worksheets(cSheet)
        lastRow = .Cells(.Rows.Count, cFirstS).End(xlUp).Row
        For i = cFirstRow To lastRow
            If .Cells(i, cCriteria) = cStrCriteria Then
                .Range(.Cells(i, cFirstS), .Cells(i, cLastS)).Cut _
                        Destination:=.Cells(i, cFirstT)
            End If
        Next
    End With

End Sub

复制 ClearContents 版本
Sub CopyClearContents()

    Const cSheet As Variant = "Sheet1"      ' Worksheet Name/Index
    Const cFirstS As Variant = "E"          ' Source First Column Letter/Number
    Const cLastS As Variant = "O"           ' Source Last Column Letter/Number

    Const cFirstT As Variant = "D"          ' Target First Column Letter/Number

    Const cFirstRow As Long = 1             ' First Row Number
    Const cCriteria As Variant = "B"        ' Criteria Column Letter/Number
    Const cStrCriteria As String = "Plan"   ' Criteria String

    Dim lastRow As Long   ' Last Row Number
    Dim i As Long         ' Row Counter

    With ThisWorkbook.Worksheets(cSheet)
        lastRow = .Cells(.Rows.Count, cFirstS).End(xlUp).Row
        For i = cFirstRow To lastRow
            If .Cells(i, cCriteria) = cStrCriteria Then
                .Range(.Cells(i, cFirstS), .Cells(i, cLastS)).Copy _
                        Destination:=.Cells(i, cFirstT)
                .Cells(i, cLastS).ClearContents
            End If
        Next
    End With

End Sub

关于excel - 为名为 xxxx 的每一行复制粘贴单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234548/

相关文章:

sql - MS Access 2010 SQL 选择计算列问题

sql-server - SSIS Excel 导入多于或少于 255 个字符的列

excel - 根据列值移动行

excel - 对象 'Range' 的方法 '_Global' 失败。错误

excel - 针对复制粘贴值优化 Excel VBA 宏

c++ - 二项式系数函数 C++ 的不同输出

excel - vba计算两个单元格中日期之间的天数,仅当两个单元格都有日期时返回一个值

excel - 设置Excel文档的mime类型

vb.net - 范围乘法 VB.NET(这段代码有什么问题?)

python - 强制 pandas 将列中的 (1,2) 解释为字符串而不是范围?