首页 文章

根据单元格值选择行

提问于
浏览
1

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

假设我分别有2张Sheet1和Sheet2 .

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

Sheet2包含列“C”中的值,并且此值在Sheet1的列“C”中具有多个匹配(已经排序并且相同的值被分组在一起) .

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

困难在于从Sheet1复制到Sheet2的值的范围将随Sheet2的列“c”中的每个不同值而不同,因为相对于特定单元格值将存在不同的行数 .

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

我对基本的宏内容很满意,并且也依赖于Macro Record来处理一些东西 . 但凭借我目前的知识和缺乏宏录制器制作像这样的宏的能力,我只是难倒!

我的请求:

  • 帮助宏,根据要复制的匹配单元格值选择一系列单元格

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

  • 对Sheet2中列出的每个值重复此操作

我想我可以用这个来计算基本编码 . 如果我可以获得特定字符串的帮助,那就是我正在寻找的东西会很棒!我不是只想答复,但我已经在这个问题上工作了8个小时,并且在网上找不到任何与此类似的东西......

1 回答

  • 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

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

相关问题