簡體   English   中英

滿足條件時創建VBA詞典條目

[英]Creat VBA Dictionary Entry When Criteria Is Met

我是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而僅通過第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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM