【问题标题】:Nested for and if loops not working in VBA嵌套的 for 和 if 循环在 VBA 中不起作用
【发布时间】:2020-03-18 13:07:07
【问题描述】:

有许多类型产品(铜)的价格报告。该报告在第一列中包含产品名称(铜、锌等),在第二列中包含价格,在第三列中包含相应日期。

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

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

 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

【问题讨论】:

  • 所有内容都被复制到同一个单元格(ws1.Range("B772")),您应该注意:Excel VBA Introduction Part 5 - Selecting Cells (Range, Cells, Activecell, End, Offset)
  • 我会按 Cooper 过滤您的来源,用 Dates 作为 Key 和 price 作为 item 填充字典,然后循环您的目标工作表以用字典填充日期。
  • @Damian,或者简单的两个标准 INDEX + MATCH。您应该将您的想法发布为答案,我肯定会赞成。 @OP,如果需要,您也可以尝试工作表功能。
  • 谢谢@JvdV,但没关系,他已经得到了答案,也许我的答案会让他更糟。
  • 谢谢你们的帮助,至少在我让整个项目运行之后,我一定会改进逻辑

标签: excel vba for-loop if-statement


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多