这就是目前的数据。列sku具有~2K行。列image具有~ 8 k行。我删除了图像文件名的文件扩展名和前导零,所以我可以更容易地匹配。
x1c 0d1x的数据
大部分的图像都不需要,只有第一场比赛是我需要的。所以你在上面的例子中看到,列sku/image之间有一个匹配-- function将在中间列中传递值。
所需的结果如下所示,请注意05099.jpg&05103.jpg存在于image列中:
的
我在SO上得到了另一个人的帮助,他们提供了这个函数,但是字典没有填充中间列的值。我完全搞不懂为什么,一开始是有效的。
Function getSKUFromFilename(filename As String) As Long
getSKUFromFilename = Val(filename)
End Function
Sub FillImageNames()
Dim ws As Worksheet, imageArr()
Set ws = ThisWorkbook.Worksheets("Sheet1")
imageArr = ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "A").End(xlUp).row)
' (1) Fill Dictionary
Dim d As New Dictionary
Dim row As Long
For row = 1 To UBound(imageArr, 1)
Dim filename As String, sku As Long
filename = Trim(imageArr(row, 1))
If filename <> "" Then
sku = getSKUFromFilename(filename)
d(sku) = filename
End If
Next
' (2) Fill sheet
Dim lastRow as Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).row
For row = 2 To lastRow
sku = Val(ws.Cells(row, 1))
If d.Exists(sku) Then
ws.Cells(row + 1, 2) = d(sku)
End If
Next
End Sub
字符串
2条答案
按热度按时间3phpmpom1#
匹配转换数据
的数据
Excel公式
个字符
VBA
型
b09cbbtk2#
本质上,您希望比较一组值对,如果这些值对相等,则将一些信息写入工作表。
您提到您正在处理大量数据,因此我建议将数据存储在一个数组中,完成所有查找匹配项的工作,然后将所有内容写回工作表。这比在Excel中逐行比较要快得多。
下面是一个简单的例子:
的数据
字符串
结果是:
的