VBA循环将列块复制/粘贴到具有动态范围的另一个工作表中

如何解决VBA循环将列块复制/粘贴到具有动态范围的另一个工作表中

我通常在这里找到答案,但是我已经被这个问题困扰了几天了。 我正在处理2张纸,一张包含新数据,一张包含历史数据。
在每张纸上,我都有列的“块”,这些块始终为4列宽,中间有一个空白列。并且具有不同的行长。 例如,在A到D列中有数据,然后是空白列,在F到I列中有数据,依此类推。如下:

Item1|     |     |     |     |Item2|     |     |     |
Title|Title|Title|Title|     |Title|Title|Title|Title|
data |data |data |data |     |data |data |data |data |
data |data |data |data |     |data |data |data |data |
     |     |     |     |     |data |data |data |data |

目标:需要检查商品编号(例如:第一个图块的A1单元格)是否等于目标工作表(相同的A1单元格)上的商品编号。
需要将第3行(包含实际数据的第一行)中的数据复制到该列的第一个块的最后一行,直到包含数据的最后一行之后的第二张工作表。并为每个列块创建一个循环,直到源工作表的最后一列为止。
问题:列块的行长不同。目标表上的内容相同,每个块的行长都不同。这就是为什么我需要为每个块使用动态范围的原因。
我的代码在下面,我设法通过使用列字母使其适用于列的第一块,但是当我尝试将动态范围与变量一起使用时,它什么也没做(也没有错误消息),所以我不知道我在做什么错。

Sub copydata()

Dim wb As Workbook
Set wb = ThisWorkbook
Dim shta As Worksheet
Dim sht1 As Worksheet
Set shta = wb.Sheets("source")
Set sht1 = wb.Sheets("target")
Dim c As Long
Dim LastCol As Long 'last column sheet source
lrws As Long 'last row of source column
frwt As Long 'first available row in target column
Dim rngs As Range
Dim rngt As Range
Const frsrc As Long = 3 'first row on source column to copy from

For c = 1 To LastCol
    If shta.Cells(1,c).Value = sht1.Cells(1,c).Value Then 'ensure data item are the same
    lrws = shta.Cells(Rows.Count,c).End(xlUp).Row
    frwt = sht1.Cells(Rows.Count,c).End(xlUp).Row + 1
    LastCol = shta.Cells(frsrc,Columns.Count).End(xlToLeft).Column
    Set rngs = shta.Range(c & frsrc).Resize(lrws,4) 'source range of first block of columns
    Set rngtg = sht1.Range(c & frwt & ":" & c & frwt).Resize(rngs.Rows.Count) 'target range for first block of column
    rntg.Value = rngs.Value
    c = c + 4 'move to the next block of column
    Else: MsgBox "Need to check table formatting"
    End If
Next c
    
End Sub

可能有比每次移动一列列更好/更容易的方法,但这是我能想到的唯一方法。 我是VBA的新手,非常感谢您可能提出的任何评论/反馈。 提前非常感谢您!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?