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

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'

我正在尝试使用两个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'    -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()
    函数。。。可能会做你需要的事,然后。。。