如何为某个SKU转换或TEXTJOIN每个“组”图像?

时间:2019-12-25 01:14:45

标签: google-sheets google-sheets-formula transpose array-formulas google-sheets-query

包含1000多种产品SKU和约4000张图像的表单。并非每个SKU都有相同数量的图像。

现在,它每行列出1张图片:

SKU001   Image001_1.jpg
SKU001   Image001_2.jpg
SKU001   Image001_3.jpg
SKU002   Image002_1.jpg
SKU002   Image002_2.jpg
SKU003   Image003_1.jpg

...等等。

为了将这些产品导入WooCommerce,我需要为每个SKU提供以逗号分隔的图像列表:

SKU001 Image001_1.jpg,Image001_2.jpg,Image001_3.jpg
SKU002 Image002_1.jpg,Image002_2.jpg
SKU003 Image003_1.jpg

我知道如何手动使用TRANSPOSE函数。我还知道如何使用TEXTJOIN来组合已水平列出的单元格。

我不知道如何通过SKU自动 执行该操作。

即读取A列,然后将B列中的所有项目转移,直到A列中的值更改为止。

我确定COUNTIF,TRANSPOSE,FILTER或它们的组合有问题,但是到目前为止我尝试过的所有方法都失败了。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

尝试:

=ARRAYFORMULA(REGEXREPLACE(SPLIT(TRANSPOSE(SUBSTITUTE(
 TRIM(QUERY(QUERY({A1:A&"♦", B1:B}, 
 "select max(Col2) 
  where Col2 is not null 
  group by Col2 
  pivot Col1"),,999^99)), " ", ",")), "♦"), "^,", ))

0

答案 1 :(得分:0)

好,知道了:)

这是一个三步解决方案,但却是一个更为简单的公式。

第1步:隔离SKU(每个SKU的唯一实例)-创建一个新的列/工作表,并在其中添加以下公式:

=unique(A:A)

(其中“ A”是包含SKU的列)。

这会给我们一个看起来像这样的列表:

[ Column A ] [ Column B ] [ Column C ]    [ Column D ]
                                        ('=UNIQUE(A:A)')
   SKU001     Image001_1.jpg               SKU001    
   SKU001     Image001_2.jpg               SKU002
   SKU001     Image001_3.jpg               SKU003
   SKU002     Image002_1.jpg               SKU004
   SKU002     Image002_2.jpg
   SKU003     Image003_1.jpg

第2步:现在我们有了一个唯一的SKU,我们可以将其用于(1)从B列(条件1)中过滤出结果,只要它们与A列中与< D列中的strong> current 行(条件2)...和(2)将结果水平转置:

=transpose(filter(B:B,A:A=D1))

我们将此公式放入E列中,然后将其复制下来,以便表格自动增加值D1,D2,D3等:

[ Column D ] [ Column E ]
   SKU001      =transpose(filter(B:B,A:A=D1))
   SKU002      =transpose(filter(B:B,A:A=D2))
   SKU003      =transpose(filter(B:B,A:A=D3))
   SKU004      =transpose(filter(B:B,A:A=D4))

换句话说:FILTER“读取列B,而列A等于D1”。然后将B列得到的值列表旋转90度并水平写出。

结果:

[ Column D ]  [ Column E ]    [ Column F ]    [ Column G ]
   SKU001     Image001_1.jpg  Image001_2.jpg  Image001_3.jpg
   SKU002     Image002_1.jpg  Image002_2.jpg 
   SKU003     Image003_1.jpg

现在,我们有了一个水平列出的图像URL列表,每个单元格1个。 但是我们需要用逗号分隔的组合列表。 这是TEXTJOIN出现的地方。

第3步:找到下一个完全空的列(无图像URL),例如M列,并使用:

=TEXTJOIN(",",TRUE,E1:L1)

TEXTJOIN使用分隔符(在本例中为逗号“,”),可以选择跳过空单元格(TRUE),然后跳过范围(E1至L1)。

结果(M列):

Image001_1.jpg,Image001_2.jpg,Image001_3.jpg
Image002_1.jpg,Image002_2.jpg

...这正是WooCommerce导入所需要的。

这样做的好处是,您可以看到中间步骤,更容易进行故障排除,并且还可以生成已过滤的SKU列表,以防您需要目录或其他东西使用。

答案 2 :(得分:0)

此摘录仅来自SKU:

={
   UNIQUE(filter(sort(A70:A),A70:A<>"")),
     arrayformula (
       substitute (  
         trim(arrayformula (TRANSPOSE (
            QUERY (
               TRANSPOSE (transpose (arrayformula (
                 if (sequence (counta (filter (sort (A70:A),A70:A<>""))) * 
                     TRANSPOSE (sequence (counta (unique (filter(sort(A70:A),A70:A<>""))))^0)*1>
                     transpose(query(filter(sort(A70:A),A70:A<>""),
                       "Select count(Col1) group by Col1 label count(Col1) ''")),
                     "",
                     "Image" & right (transpose (UNIQUE (filter (sort (A70:A),A70:A<>""))),3) & "_" & 
                               sequence (counta(A70:A)) * TRANSPOSE (sequence (counta (unique (A70:A)))^0)*1 & ".jpg")))&" ")
              , ,100)
          ))) ," ",", "))
 }

enter image description here