使用条件 Copy/Paste 执行 While 循环 - Excel VBA - 代码不工作

Do While Loop with Conditional Copy/Paste - Excel VBA - Code not working

我有一组复杂的要求,正在尝试开发一段合适的 Excel VBA 代码。我是一个初学者,所以任何关于这个问题的建议都将不胜感激。

CONTEXT:"Company A" sheet 列出了部门、薪级表和职务(A-C 列)。 "Company B" sheet 列出了他们工作的所有上述内容,但还在 D 和 E 列中指定了每个工作是否与公司 A 的工作(D 列)相匹配,如果是,则匹配哪一个( E 列),或者是否没有匹配项,然后 E 列单元格为空。

AIM:我想将公司 B 中的工作与公司 A 中的工作相匹配,并且 copy/paste 那些匹配公司 B 的工作到 "Company A" sheet 作为 D-F 列中的链接但是有是个问题!

问题:在每家公司中,有多个职位具有相同的部门-薪酬等级-职位组合,并且这些数字在公司之间不匹配,例如A 公司有 4 个工作,但 B 公司只有 3 个匹配的工作。我希望我的代码知道只复制 B 公司的工作三次并将第四行留空(以直观地指示三个匹配的工作和第四个没有匹配)。为实现这一目标,我有每个公司每个部门中相同薪酬等级的工作数量,并希望将这些数字用作我的 Do While 循环的计数器。

我写的代码:

 Private Sub CommandButton6_Click()

    Dim counter As Integer
    Dim myNum As Integer

    a = Worksheets("COMPANYB").Range("A" & Rows.Count).End(xlUp).Row
    Worksheets("JobNumbers").Range("D:D").Value = counter
    Worksheets("JobNumbers").Range("C:C").Value = myNum

    Do While counter < myNum
        For i = 2 To a
            If Worksheets("COMPANYB").Range("D" & i).Value = "Match" And _
            Worksheets("COMAPNYB").Range("E" & i).Value = Worksheets("COMPANYA").Range("C" & i).Value Then
            Worksheets("COMPANYB").Range("A" & i & ":C" & i).Copy
            Worksheets("COMPANYA").Activate
            b = Worksheets("COMPANYA").Range("D" & Rows.Count).End(xlUp).Offset(0, 3).Row
            Worksheets("COMPANYA").Range("D" & b + 1).Select
            ActiveSheet.Paste Link:=True
        End If
        Next i
        counter = counter + 1
        myNum = myNum - 1
    Loop
End Sub

...但不是工作,它只是将所有 0 放入我的 "JobNumbers" sheet 列中,我希望它使用我的计数器和 myNum 来设置 Do 的测试而循环。 如您所见,我什至没有完成我想做的 'leave the rows blank when copying' 事情,因为我非常坚持这一点。我也开始怀疑我是否对 VBA...

期望不高

我知道这是很多文字,我深表歉意 - 非常感谢feedback/help,谢谢!

=是赋值运算符。它在列中的每个单元格中写入“0”的原因是因为 Worksheets("JobNumbers").Range("D:D").Value 指的是整个列 D 中的每个单元格。然后您将 = 变量 counter 分配给所有这些单元格通过写 Worksheets("JobNumbers").Range("D:D").Value = counter

在此之上,您将 counter 定义为整数,但未为其分配值 =,因此它开始为空且不会更改。分配给单元格值的空整数将使该单元格保留为 0。