在IF语句和查找公式中使用TRANSPOSE

时间:2017-04-05 01:51:32

标签: excel excel-formula

我试图在IF语句中使用TRANSFORM的结果,如果在transform中返回的值为空,则value_if_true应该查找前一个单元格的值,向其添加一个并显示,否则只显示变换的结果。

我的问题是value_if_true中的公式返回#VALUE,即使在评估时它正在计算要返回的正确值,但如果我用静态文本替换它,它可以正常工作。

以下是我要做的事情:

{=IF(TRANSPOSE(Master!A7:A110)="",INDIRECT("RC[-1]",0)+1,TRANSPOSE(Master!A7:A110))}

这是有效的:

{=IF(TRANSPOSE(Master!A7:A110)="","blah",TRANSPOSE(Master!A7:A110))}

谢谢!

2 个答案:

答案 0 :(得分:0)

您确定RC [-1]中的值是一个数字吗?如果是文本且无法转换为数字,则返回#Value

另外,您是将这个数组公式输入单个单元格然后填充它,还是将数组一次性输入到整个范围?如果您将阵列一次性输入到整个范围,那么还要注意RC [-1]将始终引用输出数组范围左上角单元格左侧的单元格。 / p>

答案 1 :(得分:0)

很抱歉这么晚回复,令人惊讶地使用命名范围而不是明确地将它们调出来解决了这个问题。解释:

这是我参考'参考'片。它只是以YYYYWW格式降序表示的周数:

201701
201702
201703
201704
201705
201706
201707
201708

此列表的大小随着更多周的数据流入而变化,它可以拥有的最大项目是104周(两年滚动数据)。我已选择整个104行范围说$A$1:$A$104,此列表可以展开以占用并命名为ListOfWeeks

在我的显示表上,我选择了将这些日期转换成完整的104列范围,例如$I$6:$DH$6,然后在公式栏中输入以下公式:

=IF(TRANSPOSE(ListOfWeeks)=0,"",TRANSPOSE(ListOfWeeks)) 

后跟一个Ctrl+Shift+Enter,它工作得很好。