不知道如何解决这个问题。我如何完成以下来自表格的信息:
ColA (UniqID) ColB
41447.9162847222 Name1, Name2, Name3, Name4
41447.9158912037 Name2, Name6, Name9
我想最终得到:
ColA B
41447.9162847222 Name1
41447.9162847222 Name2
41447.9162847222 Name3
41447.9162847222 Name4
41447.9158912037 Name2
41447.9158912037 Name6
41447.9158912037 Name9
我无法使用 VLOOKUP 或 MATCH,因为名称可能在其他记录中重复,但 ColA 代码始终是唯一的。
T
最佳答案
使用 native 电子表格函数的答案:
=ArrayFormula(TRANSPOSE(REGEXREPLACE(SPLIT(CONCATENATE(SUBSTITUTE(", "&B:B;", ";CHAR(10)&A:A&CHAR(9)));CHAR(10));"(.*?)\t(.*)";{"$1";"$2"})))
缺点是使用此方法将所有列强制转换为文本字符串。有一些解决方法,但公式会变得更加荒谬。
使用 Google Apps 脚本自定义函数的答案,该函数还会根据评论中的请求修剪逗号分隔列表中的前导和尾随空格:
function advanceSplit(range1, range2)
{
var output = [], temp;
for (var i = 0, length = range1.length; i < length; i++)
{
if (range1[i][0])
{
var temp = range2[i][0].split(",");
for (var j = 0, length2 = temp.length; j < length2; j++)
{
output.push([range1[i][0], temp[j].trim()]);
}
}
}
return output;
}
然后在电子表格单元格中调用:
=advancedSplit(A:A;B:B)
我的轶事观察是,对于非常大的数据集,后一种方法(自定义函数)比前一种方法具有更好的性能。
关于google-apps-script - 如何拆分和转置两列结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530499/