我正在研究一个宏,根据匹配的单元格值将数据从一个工作表移动到另一个工作表。
我们说我有2张,Sheet1& Sheet2,分别。
Sheet1包含我想要复制到Sheet2的数据。
Sheet2在列" C"中包含一个值,该值在列" C"中有多个匹配项。的 Sheet1(已经排序并将相同的值组合在一起)。
我的总体目标是根据列#34; C"中的匹配值将单元格从Sheet1复制到Sheet2。我想在行的下面一行插入这些值,匹配列" C"值。
困难在于,从Sheet1复制到Sheet2的值范围将因Column" c"中的每个不同值而不同。 Sheet2,因为相对于特定单元格值将有不同的行数。
(我会为此展示一张简单的图片,但由于帖子数量较少,我不允许发布图片 - 如果需要澄清,我可以通过电子邮件发送)
我对基本的宏内容很满意,并且依赖宏记录也可以。但凭借我目前的知识和缺乏宏观记录器制作这样的宏的能力,我只是难倒!
我的要求:
帮助宏根据匹配的单元格值选择一系列单元格进行复制
帮助插入从感兴趣的单元格值下方1行开始的复制范围(单元格值为第2行,从第3行开始插入单元格)
对Sheet2
我想我可以用这个来计算基本编码。如果我可以获得特定字符串的帮助,那就是我正在寻找的东西会很棒!我不是只想给出答案,但是我一直在研究这个问题8个小时,并且找不到任何与此类似的东西...
答案 0 :(得分:0)
此代码假定您已按示例中的数据排序:
Sub transfer()
'If everything is sorted, you can do it like this:
Dim x, y 'x is the sheet1 row, y is the sheet2 row
y = 2 'they start at the same place x = 2, y = 2
For x = 2 To Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row
If Sheets(1).Cells(x, 1) = Sheets(2).Cells(y, 1) Then 'If the cell value matches
Sheets(1).Range("A" & x).Copy 'Copy the cell value from Sheet1
Sheets(2).Cells(y + 1, 1).Insert Shift:=xlDown 'And insert it below the Sheet2 Cell
'Then copy the rest of the data (columns C and D)
Sheets(1).Range("C" & x & ":D" & x).Copy Destination:=Sheets(2).Cells(y + 1, 2)
Else
x = x - 1 'We haven't found a match for this cell yet so check it again
End If
y = y + 1 'After incrementing y
Next x
End Sub
很抱歉回复缓慢 - 如果需要,我可以尽快向您解释代码! 希望这可以帮助! :)
我专门为你给我的例子写了这篇文章,所以如果你的需求发生变化,你希望能够建立在这个概念的基础上。