【发布时间】:2021-12-29 17:47:58
【问题描述】:
我有一份估价单和一张发票。我正在尝试编写代码来搜索估算表中的单位列(“L”)。找到数字后,将不同列(“A”)中的描述复制到特定范围内的发票表中。我能够让搜索循环遍历 L 列,它可以确定数字是否> 0。它甚至会将第一个描述复制到发票上。但是,它不会复制任何内容。我正在寻求帮助。到目前为止,这是我的代码。
Sub CopyToInvoice()
Dim rng As Range
Dim i As Long
Dim a As Long
Dim rng_dest As Range
Application.ScreenUpdating = False
i = 1
Set rng_dest = Sheets("Estimate").Range("L5")
'Find first cell with value in column L on sheet Estimate
Range("L5").Select
Do Until WorksheetFunction.CountA(rng_dest.Rows(i)) = 100
i = i + 1
Set rng = Sheets("Invoice").Range("C22:C36")
'Copy rows containing values to sheet Invoice
For a = 1 To rng.Rows.Count
If ActiveCell.Value > 0 Then
Sheets("Estimate").Range("A5").Copy Sheets("Invoice").Range("C22")
End If
'Step down 1 row from present location
ActiveCell.Offset(1, 0).Select
i = i + 1
Next a
Application.ScreenUpdating = True
Loop
End Sub
【问题讨论】:
-
如果这需要查找,应该涉及 4 列,每个工作表 2 列。为简单起见,我们将它们分别设为源和目标的 A、B 和 C、D。您遍历目标 C 以在源 A 中查找匹配项。如果找到,则将源 B 复制到目标 D。与您的代码相关,您遍历
Invoice C以在Estimate L中查找匹配项。如果找到,请将Estimate A复制到Invoice ?。您的代码暗示?是C,但这会覆盖C中的值(这是有效的)。你确定你要这么做吗?请确认或建议另一列。 -
发票 C 为空白。我想根据 Estimate L 中的条目完成 Invoice,从 Estimate A 复制到 Invoice C。