我在excel中具有以下功能:
INDIRECT(CHAR(COLUMN()+ 53)&O1 + 1)
当语句为true时,此函数必须是if语句的结果。我不希望O1更改为O2,O3等。当我向下拖动功能时,直到语句为true。从那里,我希望函数以升序更改此单元格引用。因此,只要if语句为假,则引用必须为O1。
我知道可以使用绝对引用来保留相同的单元格引用($ O $ 1),但是当语句为true时,单元格引用也不会更改。
我的数据如下:enter image description here
我的完整公式如下:enter image description here = IF(P2 = INDIRECT(CHAR(COLUMN()+ 51)&O1 + 1); IF(INDIRECT(CHAR(COLUMN()+ 51)&O2 + 1)=“”; INDIRECT(CHAR(COLUMN()+ 53) &O1 + 1); INDIRECT(CHAR(COLUMN()+ 51)&O2 + 1)); IF(INDIRECT(CHAR(COLUMN()+ 53)&O2 + 1)=“”;“”; INDIRECT(CHAR(COLUMN( )+51)&O2 + 1)))
我想要做的是用数据中第一列的值填充一列,直到单元格为空。然后,我想用第i + 2列中的数据填充该列(因此,我从C列转到E列)。为了做到这一点,我希望第一个单元格(在这种情况下为E列)保持不变,直到C列为空并且该列开始从E列获取值。
我希望这个描述可以清楚地说明我想做什么。
谢谢。
答案 0 :(得分:0)
我想要做的是用数据中第一列的值填充一列,直到单元格为空。然后,我想用第i + 2列中的数据填充该列(因此,我从C列转到E列)。为了做到这一点,我希望第一个单元格(在这种情况下为E列)保持不变,直到C列为空并且该列开始从E列获取值。
这不是同一种解决方案,但这可能比原始公式更适合您的需求:
=
IFERROR(INDEX(OFFSET($A$1,2,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,2,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
""))
如果需要两列以上,只需遵循以下模式扩展公式即可:
=
IFERROR(INDEX(OFFSET($A$1,2,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,2,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
IFERROR(INDEX(OFFSET($C$1,2,0,COUNTA(C:C)-1,1),ROW($A1)+2-COUNTA(A:A)-COUNTA(B:B)),
IFERROR(INDEX(OFFSET($D$1,2,0,COUNTA(D:D)-1,1),ROW($A1)+3-COUNTA(A:A)-COUNTA(B:B)-COUNTA(C:C)),
""))))
示例实现:https://i.stack.imgur.com/MAtxW.png
我已经考虑了标题和数据第一行之间多余的空白行。对于任何想要在数据集中没有空白行的情况下使用此公式的人,只需将Offset-Row参数从2更改为1:
=
IFERROR(INDEX(OFFSET($A$1,1,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,1,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
""))
您可以将公式粘贴在工作表中的任何位置,但不要忘记更改列字母以适合您的字段的位置。就您而言,可能是:
=
IFERROR(INDEX(OFFSET($C$1,2,0,COUNTA(C:C)-1,1),ROW($C1)+0),
IFERROR(INDEX(OFFSET($E$1,2,0,COUNTA(E:E)-1,1),ROW($C1)+1-COUNTA(C:C)),
""))
请注意,您需要确保列中的名称之间不包含空白单元格的行,因为这将导致其在列底部跳过相等数量的名称。
编辑:
我刚刚意识到您的系统使用分号“;”解析Excel公式(我使用逗号“,”)。将这些公式复制到电子表格时,请注意这一点。这又是公式,但使用“;” ...
=
IFERROR(INDEX(OFFSET($C$1;2;0;COUNTA(C:C)-1;1);ROW($C1)+0);
IFERROR(INDEX(OFFSET($E$1;2;0;COUNTA(E:E)-1;1);ROW($C1)+1-COUNTA(C:C));
""))