我希望在Google表格中加入2个数组,但要使用的键不是唯一的。索引匹配和vlookups无法工作。我尝试了一个附加组件,但是我不想依靠附加组件来工作24/7。如果代码损坏,我希望自己进行编辑。
客户列表
Customer ID Category
101 Fruit
102 Fruit
103 Sweets
项目列表
Item Category
Apple Fruit
Pear Fruit
Banana Fruit
Chocolate Sweets
Sugar Sweets
输出试图获取
Customer ID Item Category
101 Apples Fruit
101 Pears Fruit
101 Bananas Fruit
102 Apples Fruit
102 Pears Fruit
102 Bananas Fruit
103 Chocolate Sweet
103 Sugar Sweet
编辑 这是我尝试过的一件事,但是很慢,有时会中断:
function LEFTJOIN(range,range2,header) {
var output = [];
// checks if header
var value;
if(header == 1) {
output.push(range[0]);
value=header;
} else if(header == "") {
value=0;
} else {
value=0;
}
//Duplicates array
for(var i=0; i<range2.length; i++) {
for(var j=value, jLen=range.length; j<jLen; j++) {
output.push(range[j]);
}
}
return output;
}
然后在Google表格中我在一个单元格中调用此函数,但就像我说的那样,它非常慢。
答案 0 :(得分:0)
2个公式即可完成工作:
G1中的公式:
=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(JOIN(",",FILTER(REPT(A2:A&"-"&B2:B&",",COUNTIF(E2:E,B2:B)),A2:A>0)),",")),"-"))
I1中的公式:
=TRANSPOSE(SPLIT(TEXTJOIN("-",1,FILTER(IF(G1:G=OFFSET(G1:G,1,),"",VLOOKUP(H:H,{UNIQUE(FILTER(E2:E,E2:E<>"")),TRANSPOSE(SPLIT(JOIN("",FILTER(D2:D& IF(E2:E<>OFFSET(E2:E,1,),",","-"),D2:D<>"")),","))},2,)),G:G<>"")),"-"))
列表2必须按类别进行排序。