如果值与另一个值匹配,将内容从一个工作表复制到另一个工作表?

时间:2014-07-28 15:49:54

标签: excel vba csv

我正在尝试使用两个csv文件导入产品变体及其价格:

  1. config.csv (我正在尝试放置变种/价格)
  2. variants.csv (其中存在有关变体的信息)
  3. 我需要的格式是size::3' x 5':-120例如。

    这是 config.csv 的样子:

        SKU        super_attribute_pricing
     VTG100-130  
     VTG100-730
     ....
    

    这是 variants.csv 的样子:

        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个值并将其置于格式size::3' x 5':-120中强>

    我在super_attribute_pricing列中尝试了这个值:

    ="size::"&[variants.csv]variant!B2&":"&[variants.csv]variant!C2&";"
    

    但上述内容并未考虑 variants.csv 中sku列中的值是否与 config.csv 中的sku匹配。我希望只要SKU匹配就复制这些值 - 否则我想移动到下一行并继续比较直到它结束。

    如何使用VBA执行此操作?

1 个答案:

答案 0 :(得分:1)

这是解决问题的VBA代码。通过使用以下格式使用您希望描述所基于的单元格中的函数来调用它:

= GetSizes(A2,[variants.csv]变体$ 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

请注意,如果没有匹配的部件号,它将返回一个空字符串。

祝你好运。