簡體   English   中英

在excel VBA中使用索引匹配

[英]Using Index Match In excel VBA

Dim DateValues As Variant
Dim Shortfall As Variant
Dim Region As Variant
Dim Bucket As Variant

Dim Shortfall_rng As Range
Dim Region_rng As Range
Dim Bucket_rng As Range
Dim Datevalues_rng As Range

Dim estring As Variant

Dim StartCopying As Range


Set StartCopying = Worksheets("Asia_All").Range("O4")

Region = Worksheets("Asia_All").Range("O1").Value ' Value in cell O1 is "New York" (without Quotes)
Bucket = Worksheets("Asia_All").Range("O2").Value ' Value in cell O2 is "<!--1-->0 - 1" (without Quotes)
DateValues = Worksheets("Asia_All").Range("O3").Value ' Value in cell O3 is "2007-01-02" (without Quotes)



Set Shortfall_rng = Worksheets("Asia_All").Range("$B$2:$B$142411")
Set Bucket_rng = Worksheets("Asia_All").Range("$F$2:$F$142411")
Set Datevalues_rng = Worksheets("Asia_All").Range("J$2:$J$142411")
Set Region_rng = Worksheets("Asia_All").Range("$K$2:$K$142411")


estring = Evaluate("Index(" & Shortfall_rng.Address & ", Match(" & Bucket & Region & DateValues & ", " & Bucket_rng.Address & " & " & Region_rng.Address & "&" & Datevalues_rng.Address & ", 0))")

StartCopying.Value = estring

我正在嘗試使用索引匹配,但我得到了 #Value! 錯誤。 請注意,如果我在單元格中手動輸入索引匹配公式,它絕對可以正常工作。 僅當我嘗試在 excel vba 中復制它時才會出現此錯誤。簡而言之,

Bucket_rng 列包含一個 column 的多個值

 <!--1-->0 - 1
 <!--2-->1 - 2.5
 <!--3-->2.5 - 5
 <!--4-->5 - 10
 <!--5-->10+

Shortfall_rng 列包含一個 column 多個值,如

-4.69
-3.94
-53.94
150.18
-18.78
-9.98
-17.04
-41.32
0.0001

Datevalues_rng 列包含 yyyy-mm-dd 格式的多個值

Region_rng 列包含一個 column 多個值,如

China
New York
Australia
Japan Continent

您必須將字符串參數括在公式內的引號中。 IMO,使用標准單元格的單元格地址也更容易:

Dim ws                    As Worksheet
Dim DateValues            As Range
Dim Shortfall             As Range
Dim Region                As Range
Dim Bucket                As Range
Dim Shortfall_rng         As Range
Dim Region_rng            As Range
Dim Bucket_rng            As Range
Dim Datevalues_rng        As Range
Dim estring               As Variant
Dim StartCopying          As Range

Set ws = Worksheets("Asia_All")

Set StartCopying = ws.Range("O4")

Set Region = ws.Range("O1")    ' Value in cell O1 is "New York" (without Quotes)
Set Bucket = ws.Range("O2")    ' Value in cell O2 is "<!--1-->0 - 1" (without Quotes)
Set DateValues = ws.Range("O3")    ' Value in cell O3 is "2007-01-02" (without Quotes)



Set Shortfall_rng = ws.Range("$B$2:$B$142411")
Set Bucket_rng = ws.Range("$F$2:$F$142411")
Set Datevalues_rng = ws.Range("J$2:$J$142411")
Set Region_rng = ws.Range("$K$2:$K$142411")


estring = ws.Evaluate("Index(" & Shortfall_rng.Address & ", Match(" & Bucket.Address & "&" & Region.Address & "&" & DateValues.Address & ", " & Bucket_rng.Address & " & " & Region_rng.Address & "&" & Datevalues_rng.Address & ", 0))")

StartCopying.Value = estring

暫無
暫無

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

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