【问题标题】:Is there a way to have formula for first row automatically populate the cells below?有没有办法让第一行的公式自动填充下面的单元格?
【发布时间】:2016-10-04 12:45:52
【问题描述】:

如果$T4:$AE4 范围内有数字>0$AG4:$AR4 范围内有数字,我使用此公式在单元格中打印yes

=IF(OR(COUNTIF($T4:$AE4,">0"),COUNTIF($AG4:$AR4,">0")),"yes","")

然后我将公式向下拖动(因为我需要 1000 行)。 如果下面的行符合条件,有没有办法只为第一行设置公式并自动填充下面的单元格?

我尝试使用ARRAYFORMULA,但它不起作用..

=IF(OR(ARRAYFORMULA(COUNTIF($T4:$AE,">0")),ARRAYFORMULA(COUNTIF($AG4:$AR,">0"))),"yes","")

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    试试这个公式:

    =ArrayFormula(if(TRANSPOSE(MMULT(COLUMN(T4:AE)^0,TRANSPOSE(if(ISNUMBER(T4:AE),T4:AE,0))))+TRANSPOSE(MMULT(COLUMN(AG4:AR)^0,TRANSPOSE(if(ISNUMBER(AG4:AR),AG4:AR,0))))>0,"yes",""))
    

    说明

    mmult 用于计算 $T4:$AE 和 $AG4:$AR 的总和

    ISNUMBER 是将所有非数字值转换为数字,以便在mmult 函数中仅使用数字。

    COLUMN(AG4:AR)^0 将给出一列 (1,1,1,1,1) - 正是我们需要 mmult 函数。

    使用Transpose是因为在[mmult]函数中:

    matrix1 的列数必须等于矩阵 1 的行数 矩阵2

    所以我们需要转置部分公式。


    顺便说一句,这是这个公式,但转换为计算单词“word”的匹配:

    =ArrayFormula(if(TRANSPOSE(MMULT(COLUMN(T4:AE)^0,TRANSPOSE(--(T4:AE="word"))))+TRANSPOSE(MMULT(COLUMN(AG4:AR)^0,TRANSPOSE(--(T4:AE="word"))))>0,"yes",""))
    

    如你所见,公式的原理可以用来匹配count的逻辑。

    【讨论】:

    • 这是因为 mmult 函数以特定方式获取范围,我在答案中添加了更多细节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多