根据条件将行转换为列所需的公式/宏

时间:2013-05-22 14:27:51

标签: excel excel-vba vba

所以这就是我的困境,我正在将一个csv文件从一个电子商务商店转换到另一个,我需要重新安排数据。转置可行,但是我需要在指定条件发生变化后断开新行的信息。

产品ID imagepath等级
99999999 /image1.jpg 1个
99999999 /image2.jpg 2
99999999 /image3.jpg 3
88888888 /image4.jpg 1个

我需要输出如下:

product id imagepath imagepath2 imagepath3
99999999 /image1.jpg /image2.jpg /image3.jpg
88888888 /image4.jpg


所以基本上每当产品ID发生变化时,我都需要将信息分解为新的一行。电子表格大约1200行左右。一些产品有7个图像,有些有一个。我确定需要一个FOR LOOP,或者说那个程度上的东西,但是我自己并不是很好地用宏来生成它,而且我似乎无法在这里找到一个具体的例子......帮助!< / p>

1 个答案:

答案 0 :(得分:0)

你有什么尝试?要求为你做这件事?你能否至少提供一个代码或你取得的任何进展?

<Maybe create a new table for your output>
Set ProductValues = ActiveDocument.Fields("product id").GetPossibleValues
For i = 0 To ProductValues.Count - 1
 ActiveDocument.Fields("product id").Select ProductValues.Item(i).Text
 Set imagepath= ActiveDocument.Fields("imagepath").GetPossibleValues
 For j = 0 To imagepath.Count - 1
        ActiveDocument.Fields("imagepath").Select imagepath.Item(i).Text
        Set rank= ActiveDocument.Fields("rank").GetPossibleValues
        For k = 0 To rank.Count - 1
              ActiveDocument.Fields("rank").Select rank.Item(i).Text
              <if the current product_id exists on the export table>
              <copy current row information in new table>
              <if has already a picture, increase the table columns by 1 and add new picture url>
              <or if rank give the amount of picture, you can loop through all rank position at beginning in order to find the maximum rank and intialize your table with [][your rank]>
              <For export table you do mytable[0][0]=product id>
              <check if product id is different from mytable[i-position] and different from product id>
              <to do the picture part mytable[i-position][rank]=picture url>
        Next
  Next
Next

这应该让您可以逐个完成所有单个元素,现在完成剩下的任务并创建新表。