首页 > 解决方案 > 嵌套的 for 和 if 循环在 VBA 中不起作用

问题描述

有许多类型产品(铜)的价格报告。报告包括产品名称(铜、锌等)在一栏,价格在第二栏,对应的日期在第三栏。

我需要在此报告中仅找到铜,然后我需要获取特定日期范围内每个日期的价格,并将此价格粘贴到另一个也有日期的电子表格中,因此在粘贴价格时,应将其粘贴到该日期的正确行。

我只粘贴了一个价格,但这不是正确的日期。我希望截图能帮助理解任务。

在此处输入图像描述

 Dim elements As Range, element As Range, dates_pnl As Range, x As Range
 Set elements = Workbooks("Metals_2019_11_21.csv").Worksheets("Metals_2019_11_21").Range("A2:A10")
 Set wb1 = ThisWorkbook
 Set ws1 = wb1.Worksheets("Prices")
 Set dates_pnl = ws1.Range("A771:A779")

 For Each element In elements
     If element.Value = "Copper" Then
         For Each x In dates_pnl
             If element.Offset(0, 1) = x Then
                 element.Offset(0, 2).Copy
                 ws1.Range("B772").PasteSpecial Paste:=xlPasteValues
             End If
         Next x
     End If
 Next element

标签: excelvbafor-loopif-statement

解决方案


你的复制方式不是最有效的,但它确实有效。这是一个很好的起点。

Dim elements As Range, element As Range, dates_pnl As Range, x As Range
Set elements = Workbooks("Metals_2019_11_21.csv").Worksheets("Metals_2019_11_21").Range("A2:A10")
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("Prices")
Set dates_pnl = ws1.Range("A771:A779")

For Each element In elements
    If element.Value = "Copper" Then
        For Each x In dates_pnl
            If element.Offset(0, 1) = x Then
                x.Offset(0, 1).Value = element.Offset(0, 2).Value
            End If
        Next 'x
    End If
Next 'element

推荐阅读