如何在Excel或OpenOffice中创建与第三个值匹配的两个列?

时间:2018-09-29 22:01:18

标签: excel openoffice-calc

我有一列包含10个单元格,每个单元格中都有不同的值。如何创建两列,每列均与其他9匹配。

示例:

1
2
3
4
5
6
7
8
9
10

成为

1 2
1 3
1 4
1 5
......
2 1
2 3
2 4
2 5
.....
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9

3 个答案:

答案 0 :(得分:1)

我不确定我是否读过与其他人相同的问题。我认为您的示例仅仅是一个示例,并且前10个单元格可以包含任何内容,并且您希望可以产生的所有排列。虽然我认为其他答案可能适用于您描述的特定情况,但是如果您在这些单元格中有其他数据,它们可能就无效。因此,我提供了一种变体,它使用类似的技术间接引用单元格。一组10个唯一对象中的2个对象的排列将产生90个对象(这就是Tom Sharpe的上述技术引用90的原因)。

假设您的A1到A10中有10个项目,我将以下公式放到B1中,然后将其复制到B90中:

=INDIRECT("R"&QUOTIENT(ROW()-1,9)+1&"C1",FALSE)

此外,我将在C1中使用此公式并将其复制到C90中:

=INDIRECT("R"&MOD(ROW()-1,9)+1+((MOD(ROW()-1,9)+1)>=QUOTIENT(ROW()-1,9)+1)&"C1",FALSE)

结果应为您提供与示例匹配的附件中显示的内容。Example

同样,它将显示您在A1到A10中具有的任何值的排列,如第二幅图片所示,用单词代替数字1到10。 enter image description here

答案 1 :(得分:0)

在Excel中(没有VBA或类似工具),一种方式:

在A1中并向下复制到A100:=INT((ROW()+9)/10)

在B1中,并用 Ctr 复制到B10:1

选择B1:B10,然后使用 Ctrl 复制到B100。

在C1中并复制到C100:=A1=B1

选择列A:B,复制,特殊粘贴,值。

过滤A:C,在ColumnC中选择TRUE,然后删除所有蓝色索引(可见内容)行。

删除ColumnC。

答案 2 :(得分:0)

或在A1中:

=QUOTIENT(ROW()-1,9)+1

只是复制到A90而已。

然后在B1:

=MOD(ROW()-1,9)+1+((MOD(ROW()-1,9)+1)>=A1)

复制到B90。