根据单元格值select行

我正在处理一个macros,根据匹配的单元格值将数据从一个表单移动到另一个表单。

假设我有两张纸,分别是Sheet1和Sheet2。

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

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

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

难点在于,从Sheet1复制到Sheet2的值的范围将与Sheet2的“c”列中的每个不同值不同,因为相对于特定单元格值将有不同数量的行。

(我会为此展示一个简单的图片,但是由于post数量太less,我不能发布图片 – 如果需要澄清,我可以发邮件给我)

我对基本的macros观东西没有问题,也依靠macros观logging来解决某些问题。 但是用我目前的知识和缺乏macros观logging器的能力来制作这样的macros,我只是难住!

我的请求:

  1. 帮助macros根据匹配的单元格值来select一系列单元格进行复制

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

  3. 为Sheet2中列出的每个值重复此操作

我想我可以用这个来确定基本的编码。 如果我可以得到的帮助,特定的string,做我所寻找的将是伟大的! 我不想只是交出答案,但我一直在这个问题上工作8 + hrs,并找不到任何类似于这个网上的东西…

这个代码假定你已经按照你的例子对数据进行了sorting:

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 

对不起,慢回复 – 我可以很快解释代码给你,如果需要的话! 希望这可以帮助! 🙂

在这里输入图像说明

我专门为你给我的例子写了这篇文章,所以希望你能在这个概念的基础上加以改进。