这是我要做的事情,我有一张表,其中包含一个名称列表,其中没有重复长度不同的名称。我希望有一个公式或vba子,让下一行复制原始的名称列表并将其偏移到我的一个,以便原始的顶级名称现在是第二个列表的姓氏。我需要在末尾10列表中没有相同的名称在同一行。
以下是我喜欢的样子。
ColumnB ColumnC ColumnD ColumnE
Name1 Name2 Name3 Name4
Name2 Name3 Name4 Name1
Name3 Name4 Name1 Name2
Name4 Name1 Name2 Name3
与Sudoku游戏一样,每行或每列中的名称都不会有重复。
我不确定如何最好地实现这一目标,因为如上所述,列表的长度是一个变量。理想情况下,我想创建第一个列表,然后让另外9个列表自动填充。有什么建议吗?
EDIT ___________________ @Paul Drye,我的公式得到以下结果
ColumnB ColumnC ColumnD ColumnE
Name1 Name2 Name3 Name4
Name2 Name3 Name4 Name1
Name3 Name4 Name1 Name1
Name4 Name1 Name1 Name1
如您所见,最后两列开始显示问题。
答案 0 :(得分:2)
如果公式有效,您只需使用
即可获得此结果=IF(ISBLANK(B3),B$2,B3)
假设您的数据在C2
中开始,请在单元格B2
中。然后,在选择要占用的整个单元格范围后,可以使用 CTRL + R,CTRL + D 向下复制或填充此内容。
如果副本正确,则单元格K11
的公式为:
=IF(ISBLANK(J12),J$2,J12)
图片显示B列中的输入,其余为此公式
这个公式或多或少有效,因为绝对行引用确保如果我们位于列表的末尾,则使用第2行的值。
答案 1 :(得分:2)
如果您希望公式无论您的数据周围是什么都有效,您可以使用ROWS
,COLUMNS
和MOD
以及一些绝对/相对范围获得相同的结果。
单元格C2
中的公式向下和向下复制。使用命名范围可能看起来好一些。如果您想了解它如何生成数字,请移除INDEX
并获取计数器。
=INDEX($B$2:$B$11,MOD(ROWS($C$2:C2)+COLUMNS($C$2:C2)-1,COUNTA($B$2:$B$11))+1)
图片显示与其他答案相同的结果
答案 2 :(得分:1)
假设您的列表以A1开头,请在B1中尝试:
=IF(A2="",IF(ISERR(OFFSET(A$1,-1,0)),A$1, A$1),A2)
然后,您可以将其向下和跨列复制以获取剩余数据。如果您复制它,或者如果您将更多列复制到右边而不是数据片段,则公式会有参考问题,但除此之外它就可以解决问题。
基本上它说“看一个左边的单元格和一个向下的单元格,除非那个单元格是空白的,否则给我那个。在这种情况下,请给我列中的第一个项目。”