Excel 匹配常用值并复制到相应单元格的脚本
Excel Script to match common values and copy to the corresponding cell
我见过类似的问题,但不是我一直坚持的问题。
以上是我正在处理的数据示例。
电子邮件地址的左栏 (E) 很长 10,000+ 并且没有特定的顺序,与它对应的国家 (F)。
电子邮件地址 (H) 的右列只是大小的一小部分,但它包含许多重复值。
我需要将 E 中的所有值与 H 中的所有值进行比较,如果匹配则复制 [=24] 中的值=]F到I.
中对应的值
我查看了 Vlookup、VBA 脚本和 if 公式,但我无法理解我需要在这里做什么。任何帮助将不胜感激。
请和谢谢。
请尝试下一个代码。它使用数组并且主要在内存中工作应该非常快:
Sub ExtractMatchingCountry()
Dim sh As Worksheet, lastRowE As Long, lastRowH As Long, arrEF, arrHI, i As Long, j As Long
Set sh = ActiveSheet
lastRowE = sh.Range("E" & sh.rows.count).End(xlUp).Row 'last cell in E:E
lastRowH = sh.Range("H" & sh.rows.count).End(xlUp).Row 'last cell in H:H
arrEF = sh.Range("E2:F" & lastRowE).value 'place the range in an array for faster iteration/processing
arrHI = sh.Range("H2:I" & lastRowH).value 'place the range in an array for faster iteration/processing
For i = 1 To UBound(arrEF)
For j = 1 To UBound(arrHI)
If arrEF(i, 1) = arrHI(j, 1) Then
arrHI(j, 2) = arrEF(i, 2): Exit For
End If
Next j
Next i
'drop the processed array content to the range:
sh.Range("H2").Resize(UBound(arrHI), 2).value = arrHI
End Sub
是否有可能要比较的字符串看起来相同但有些字母是大写而不是小写?如果是这样,我也可以调整代码来处理这种情况。现在,它比较 相同的字符串 。我的意思是“john.doe@yahoo.com”与“John.doe@yahoo.com”不一样...
我见过类似的问题,但不是我一直坚持的问题。
以上是我正在处理的数据示例。
电子邮件地址的左栏 (E) 很长 10,000+ 并且没有特定的顺序,与它对应的国家 (F)。
电子邮件地址 (H) 的右列只是大小的一小部分,但它包含许多重复值。
我需要将 E 中的所有值与 H 中的所有值进行比较,如果匹配则复制 [=24] 中的值=]F到I.
我查看了 Vlookup、VBA 脚本和 if 公式,但我无法理解我需要在这里做什么。任何帮助将不胜感激。
请和谢谢。
请尝试下一个代码。它使用数组并且主要在内存中工作应该非常快:
Sub ExtractMatchingCountry()
Dim sh As Worksheet, lastRowE As Long, lastRowH As Long, arrEF, arrHI, i As Long, j As Long
Set sh = ActiveSheet
lastRowE = sh.Range("E" & sh.rows.count).End(xlUp).Row 'last cell in E:E
lastRowH = sh.Range("H" & sh.rows.count).End(xlUp).Row 'last cell in H:H
arrEF = sh.Range("E2:F" & lastRowE).value 'place the range in an array for faster iteration/processing
arrHI = sh.Range("H2:I" & lastRowH).value 'place the range in an array for faster iteration/processing
For i = 1 To UBound(arrEF)
For j = 1 To UBound(arrHI)
If arrEF(i, 1) = arrHI(j, 1) Then
arrHI(j, 2) = arrEF(i, 2): Exit For
End If
Next j
Next i
'drop the processed array content to the range:
sh.Range("H2").Resize(UBound(arrHI), 2).value = arrHI
End Sub
是否有可能要比较的字符串看起来相同但有些字母是大写而不是小写?如果是这样,我也可以调整代码来处理这种情况。现在,它比较 相同的字符串 。我的意思是“john.doe@yahoo.com”与“John.doe@yahoo.com”不一样...