根据单元格值选择行

时间:2014-10-16 21:03:08

标签: excel vba excel-vba

我正在研究一个宏,根据匹配的单元格值将数据从一个工作表移动到另一个工作表。

我们说我有2张,Sheet1& Sheet2,分别。

Sheet1包含我想要复制到Sheet2的数据。

Sheet2在列" C"中包含一个值,该值在列" C"中有多个匹配项。的 Sheet1(已经排序并将相同的值组合在一起)。

我的总体目标是根据列#34; C"中的匹配值将单元格从Sheet1复制到Sheet2。我想在行的下面一行插入这些值,匹配列" C"值。

困难在于,从Sheet1复制到Sheet2的值范围将因Column" c"中的每个不同值而不同。 Sheet2,因为相对于特定单元格值将有不同的行数。

(我会为此展示一张简单的图片,但由于帖子数量较少,我不允许发布图片 - 如果需要澄清,我可以通过电子邮件发送)

我对基本的宏内容很满意,并且依赖宏记录也可以。但凭借我目前的知识和缺乏宏观记录器制作这样的宏的能力,我只是难倒!

我的要求:

  1. 帮助宏根据匹配的单元格值选择一系列单元格进行复制

  2. 帮助插入从感兴趣的单元格值下方1行开始的复制范围(单元格值为第2行,从第3行开始插入单元格)

  3. 对Sheet2

  4. 中列出的每个值重复此操作

    我想我可以用这个来计算基本编码。如果我可以获得特定字符串的帮助,那就是我正在寻找的东西会很棒!我不是只想给出答案,但是我一直在研究这个问题8个小时,并且找不到任何与此类似的东西...

1 个答案:

答案 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

很抱歉回复缓慢 - 如果需要,我可以尽快向您解释代码! 希望这可以帮助! :)

enter image description here

我专门为你给我的例子写了这篇文章,所以如果你的需求发生变化,你希望能够建立在这个概念的基础上。