Excel 如果值与另一个值匹配,是否将内容从一个工作表复制到另一个工作表?
我正在尝试使用两个csv文件导入产品变体及其价格:Excel 如果值与另一个值匹配,是否将内容从一个工作表复制到另一个工作表?,excel,vba,csv,Excel,Vba,Csv,我正在尝试使用两个csv文件导入产品变体及其价格: config.csv(我试图放置变体/价格的位置) variants.csv(其中包含有关变体的信息) 例如,我需要的格式是size::3'x5':-120 这就是config.csv的外观: SKU super_attribute_pricing VTG100-130 VTG100-730 .... sku size price VTG100-130 3' x 5'
size::3'x5':-120
这就是config.csv的外观:
SKU super_attribute_pricing
VTG100-130
VTG100-730
....
sku size price
VTG100-130 3' x 5' -120
VTG100-130 4' x 6' -80
VTG100-130 5' x 8' 0
VTG100-730 3' x 5' -120
VTG100-730 4' x 6' -80
....
这就是变体.csv的外观:
SKU super_attribute_pricing
VTG100-130
VTG100-730
....
sku size price
VTG100-130 3' x 5' -120
VTG100-130 4' x 6' -80
VTG100-130 5' x 8' 0
VTG100-730 3' x 5' -120
VTG100-730 4' x 6' -80
....
只要variants.csv中的sku与config.csv中的sku匹配,我如何使用上述3个值并将其置于大小::3'x 5':-120格式
我在super\u attribute\u pricing
列中尝试了这个值:
="size::"&[variants.csv]variant!B2&":"&[variants.csv]variant!C2&";"
<> P>但不考虑Sigu列中的Sku列的值是否在<>强> CONFIG.CSV中匹配SKU。只要SKU匹配,我就要复制这些值,否则我就要移动到下一行并进行比较,直到结束
如何使用VBA执行此操作?以下是解决您问题的VBA代码。在要基于描述的单元格中使用函数调用它,使用以下格式:
=GetSize(A2,[variants.csv]variant!$A$2:$A$6)
第一个参数是要查找的零件,第二个参数是尺寸表(变量)中零件的绝对列表
此函数调用假定您是从config.csv工作表调用它,并且表的第一个数据行分别位于每个工作簿的A2中。适当更改工作表或单元格地址。按照编写代码的方式,您只需传递零件号列表。偏移量将为您从“大小”和“价格”列中查找信息
Function GetSizes(rngValue As Range, rngLookup As Range) As String
Dim strSizes As String
Dim strLookup As String
Dim rngTemp As Range
Dim cellval As Range
Set rngTemp = rngLookup
strLookup = rngValue.Value
strSizes = "size::"
For Each cellval In rngTemp
If cellval.Value = strLookup Then
strSizes = strSizes & cellval.Offset(0, 1).Value & ":" & cellval.Offset(0, 2).Value & ";"
End If
Next
If strSizes = "size::" Then strSizes = ""
If Right(strSizes, 1) = ";" Then strSizes = Left(strSizes, Len(strSizes) - 1)
GetSizes = strSizes
End Function
请注意,如果没有匹配的零件号,它将返回一个空字符串
祝你好运。我不明白。。。。在变量表中,VTG100-130有3个值。。。您的配置中会有3行吗?还是你就选第一个?似乎配置已经有了第一列。。。如果是这种情况,应该从变体表中选择哪一个?仅第一个。这些值实际上类似于vtg100-130-3,vtg100-130-4
,但我认为删除尺寸部分(-3,-4
等)会使匹配更容易。请查看Vlookup()
函数。。。可能会做你需要的事,然后。。。