【问题标题】:Creat VBA Dictionary Entry When Criteria Is Met满足条件时创建 VBA 字典条目
【发布时间】:2017-09-21 05:52:33
【问题描述】:

我是 VBA 词典的新手。我要做的是评估工作表的每一行。如果 J 列中的值为“100”,那么我想在字典中创建一个键/项条目。如果 J 列中有任何其他值,我不希望创建条目并让宏查看下一行数据。

我目前有以下代码:

Dim x, x2, y, y2()
Dim i As Long
Dim dict As Object
Dim LastRowTwo As Long, shtOrders As Worksheet, shtReport As Worksheet

Set shtOrders = Worksheets("Orders")
Set shtReport = Worksheets("Mapping")
Set dict = CreateObject("Scripting.Dictionary")

With shtReport
    LastRow = .Range("G" & Rows.Count).End(xlUp).Row
    x = .Range("G2:G" & LastRow).Value
    x2 = .Range("I2:I" & LastRow).Value

   Set SelectionRNG = Worksheets("Mapping").Range("G2:J" & LastRow)

For Each rngrow In SelectionRNG.Rows

If rngrow.Cells(1, 4) = "100" Then
 dict.Item(x(i, 1)) = x2(i, 1)

End If    
 Next
  End With

我知道这一行:

dict.Item(x(i, 1)) = x2(i, 1)

是我的问题所在。我在下面的代码中使用了该语法,它工作正常:

    For i = 1 To UBound(x, 1)
   dict.Item(x(i, 1)) = x2(i, 1)
   Next i

我被困在如何更改“rngrow 代码”的语法以添加字典条目而不使用“i”或直接调整上面的代码以包含 IF 语句以检查列 J 中的值(并且仅在 J = 100 时为当前正在评估的行创建一个条目。

如果上面的代码不清楚,键将在 G 列中,项目将在 I 列中。(我稍后查找 G 列并检索 I 列的值。)

正如我所说,我是新手,所以我很感激任何帮助!

干杯!

【问题讨论】:

  • 也许用rngrow.Row - 1替换i
  • 啊!我曾建议rngrow.Row - 1 的替代方案,然后将其删除,因为我认为单元格位于不同的工作表上,但现在意识到它们不是。所以,我会再次建议 - 你可以使用 rngrow.Cells(1, 1).Value 代替 x(i, 1)rngrow.Cells(1, 3).Value 代替 x2(i, 1)
  • @YowE3K 感谢这两个解决方案,rngrow.row-1 替换 i 有效——您下面的解决方案也有效,我认为更透明,所以我将其应用于我的代码。

标签: excel dictionary syntax vba


【解决方案1】:

我会摆脱 rngrow 并只循环第 2 行到 LastRow

Dim i As Long
Dim dict As Object
Dim LastRow As Long, shtReport As Worksheet

Set shtReport = Worksheets("Mapping")
Set dict = CreateObject("Scripting.Dictionary")

With shtReport
    LastRow = .Range("G" & .Rows.Count).End(xlUp).Row

    For i = 2 To LastRow
        If .Cells(i, "J") = "100" Then
            dict.Item(.Cells(i, "G").Value) = .Cells(i, "I").Value
        End If
    Next
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多