列上的耦合值

时间:2016-07-12 10:30:04

标签: excel excel-vba python-3.x openrefine vba

我的电子表格包含多个列中的值,如此方案

value1  value2  value3

我希望像这个计划一样将每个价值相互结合:

value1  value2
value1  value3
value2  value3

是否有任何excel函数或python代码或OpenRefine函数执行此任务?

1 个答案:

答案 0 :(得分:1)

在OpenRefine中,您可以分三步完成。 首先将所有值放入单个单元格中,并在每个值之间使用分隔符,并且不在任何文本中使用:

从其中一个列的下拉菜单中选择菜单"编辑列 - >根据此列添加列" 使用GREL:

forEach(row.columnNames,cn,cells[cn].value).join("|")

您应该有一个新列,其中包含所有在一个单元格中连接在一起的值:

value1|value2|value3

现在创建条款的组合 - 从新列的下拉菜单中选择菜单"编辑单元格 - >转换..." 使用GREL:

forEachIndex(value.split("|"),i,v,forRange(i+1,value.split("|").length(),1,j,v.trim() + "," + value.split("|")[j].trim()).join("|")).join("|")

这应该为您提供一个组合列表,其中的值以逗号分隔,并且由管道字符分隔的组合(可以随意替换上面GREL中的其他连接字符以用于不同的分隔符):

value1,value2|value1,value3|value2,value3|

然后最后在同一列上使用菜单项"编辑单元格>拆分多值单元格..."指定管道' |'字符作为分隔符。您现在将拥有一个包含每个组合的列:

value1,value2
value1,value3
value2,value3