【发布时间】: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