而不是Excel VBA中的多個If ... Then
語句,您可以使用Select Case結構。但是如果案件是一個長長的清單,那麼如何有效地執行這項任務呢?例如,看看以下數據:類似於VLOOKUP的功能:在VBA Excel中選擇長列表大小寫Excel
Code ID Girls Names
0001 Sophia
0002 Emma
0003 Olivia
0004 Isabella
0005 Ava
0006 Lily
0007 Zoe
0008 Chloe
0009 Mia
0010 Madison
0011 Emily
0012 Ella
0013 Madelyn
0014 Abigail
0015 Aubrey
0016 Addison
0017 Avery
0018 Layla
0019 Hailey
0020 Amelia
0021 Hannah
0022 Charlotte
0023 Kaitlyn
0024 Harper
0025 Kaylee
0026 Sophie
0027 Mackenzie
0028 Peyton
0029 Riley
0030 Grace
0031 Brooklyn
0032 Sarah
0033 Aaliyah
0034 Anna
0035 Arianna
0036 Ellie
0037 Natalie
0038 Isabelle
0039 Lillian
0040 Evelyn
0041 Elizabeth
0042 Lyla
0043 Lucy
0044 Claire
0045 Makayla
0046 Kylie
0047 Audrey
0048 Maya
0049 Leah
0050 Gabriella
0051 Annabelle
0052 Savannah
0053 Nora
0054 Reagan
0055 Scarlett
0056 Samantha
0057 Alyssa
0058 Allison
0059 Elena
0060 Stella
0061 Alexis
0062 Victoria
0063 Aria
0064 Molly
0065 Maria
0066 Bailey
0067 Sydney
0068 Bella
0069 Mila
0070 Taylor
0071 Kayla
0072 Eva
0073 Jasmine
0074 Gianna
0075 Alexandra
0076 Julia
0077 Eliana
0078 Kennedy
0079 Brianna
0080 Ruby
0081 Lauren
0082 Alice
0083 Violet
0084 Kendall
0085 Morgan
0086 Caroline
0087 Piper
0088 Brooke
0089 Elise
0090 Alexa
0091 Sienna
0092 Reese
0093 Clara
0094 Paige
0095 Kate
0096 Nevaeh
0097 Sadie
0098 Quinn
0099 Isla
0100 Eleanor
我在列AA放碼ID列表,列表女子在列AB名稱的。我不會使用Select Case結構鍵入上面的列表,所以我使用下面的代碼來完成相同的任務。它與列A中的部分文本匹配並在列E中打印結果:
Sub Matching_ID()
.......................................
Dim ID As String, j As Integer, k As Integer, List As Integer
List = Cells(Rows.Count, "AA").End(xlUp).Row
ID = Mid(Cells(i, "A"), j, 4)
For k = List To 2 Step -1
If ID = Cells(k, "AA").Value Then
Cells(j, "E") = Cells(k, "AB").Value
Exit For
Else
Cells(j, "E") = ""
End If
Next k
.......................................
End Sub
儘管上面的代碼工作正常,但它非常耗時。有沒有更好的辦法?
謝謝您的回答。也感謝你讓我知道MATCH功能。您的代碼使我的程序速度提高了4倍(對於3064數據大約爲7s)。我很好奇,有沒有更好的方法? –
@ Anastasiya-Romanova秀看到這篇文章的速度測試與匹配VS找到與陣列:https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance -shootout /它測試了三種方法,發現使用單列匹配Application.Match的結果最快。 –