包含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或它们的组合有问题,但是到目前为止我尝试过的所有方法都失败了。
有什么建议吗?
答案 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)), " ", ",")), "♦"), "^,", ))
答案 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)
))) ," ",", "))
}