如何在excel中对magento导入中的产品属性进行排序

时间:2015-08-28 10:34:10

标签: excel magento excel-formula vlookup

基本上我经营着一家有各种服装产品的Magento商店。我需要以某种方式使用excel,以便输入我的产品名称,SKU和属性,以生成Magento csv导入文件。

我有很多属性,如颜色,腿部大小,腰围尺寸。

例如,一种产品可能具有以下潜在属性

货物长裤 -

颜色:黑色,海军蓝,卡其色

腿部尺寸:31,33,35

腰围:32,34,36,38,40,42

我需要以某种方式设置一个循环,它可以获取值并按以下格式排列

颜色| LegSize |腰部|

黑色| 31 | 34 |

黑色| 31 | 36 |

黑色| 31 | 38 |

我希望我说清楚。例如,该产品将有超过54种变化。

我真的希望能够输入各种变化,并且精益求精。

1 个答案:

答案 0 :(得分:0)

递归函数调用怎么样,而不是循环?

以下是我如何构建数据以回答您的问题(我还没有足够的代表来发布图片,所以这是我使用的表格的图表:

+---------------------------------------+
|   |       A        |    B     |   C   |
|---------------------------------------|
| 1 | Cargo Trousers |          |       |
|---------------------------------------|
| 2 | Colours        | Leg Size | Waist |
|---------------------------------------|
| 3 | Black          | 31       | 32    |
|---------------------------------------|
| 4 | Navy           | 33       | 34    |
|---------------------------------------|
| 5 | Khaki          | 35       | 36    |
|---------------------------------------|
| 6 |                |          | 38    |
|---------------------------------------|
| 7 |                |          | 40    |
|---------------------------------------|
| 8 |                |          | 42    |
+---------------------------------------+

这里有一大堆代码可以用来获取你想要的列表。请注意,它正在寻找空单元格,所以不要跳过。 :)

Option Explicit

Dim HomeSheet As String
Dim NewSheet As String

Function GetAllPermutations()

    HomeSheet = ActiveSheet.Name 'Where we start from
    NewSheet = Sheets.Add.Name 'Place to put new stuff
    Sheets(HomeSheet).Select

    RecursivePermutations "", 1, 0

End Function

Function RecursivePermutations(ByVal CurrentValue As String, ByVal SourceColumn As Long, ByRef OutputRow As Long)

    Dim x As Long
    Dim myText As String

    For x = 3 To Cells.Rows.Count

        'Is this row's value empty?  Then we need to exit
        If Cells(x, SourceColumn) = "" Then
            If x = 3 Then
                'We hit a brand new blank column, time to write it out
                OutputRow = OutputRow + 1
                Sheets(NewSheet).Cells(OutputRow, 1) = CurrentValue
            End If
            'All done here
            Exit Function
        End If

        If SourceColumn = 1 Then
            'First time through loop for this base value
            myText = Trim(Cells(x, SourceColumn))
        Else
            'Add another one
            myText = "|" & Trim(Cells(x, SourceColumn))
        End If

        'Make recursive call to self
        RecursivePermutations CurrentValue & myText, SourceColumn + 1, OutputRow

    Next x

End Function