在行中找到第一个填充的单元格,然后将空白计数到下一个填充的单元格并拉入标题

时间:2016-03-16 10:02:32

标签: excel excel-2010 offset

如何找到包含数字的行中的第一个单元格,然后计算空白单元格直到下一个数字,如果空白单元格的数量大于36,则从空白后面的填充单元格中拉出标题细胞。
在下一栏中,我将需要一个公式,该公式从36个空白单元格后面的填充单元格开始,并再次执行与上述相同的操作,即对空白单元格进行计数,如果在标题中大于36则进行计数。 我认为它可能是偏移功能但不确定如何将它拉到一起 - 或者它是否需要VBA?

2 个答案:

答案 0 :(得分:0)

这些都是数组公式**

A59中,用于确定该行的预期回报次数:

=COUNT(1/(MMULT(INDEX(MODE.MULT(IF(ISNUMBER(J59:DC59),{1;1}*COLUMN(J59:DC59))),N(IF(1,ROW(INDEX(A:A,1):INDEX(A:A,COUNT(MODE.MULT(IF(ISNUMBER(J59:DC59),{1;1}*COLUMN(J59:DC59))))-1))+{0,1}))),{-1;1})-1>36))

向下复制以给出行60,61等的类似计数

然后,在B59

=IF(COLUMNS($A:A)>$A59,"",INDEX($3:$3,SMALL(IF(MMULT(INDEX(MODE.MULT(IF(ISNUMBER($J59:$DC59),{1;1}*COLUMN($J59:$DC59))),N(IF(1,ROW(INDEX(A:A,1):INDEX(A:A,COUNT(MODE.MULT(IF(ISNUMBER($J59:$DC59),{1;1}*COLUMN($J59:$DC59))))-1))+{0,1}))),{-1;1})-1>36,MODE.MULT(IF(ISNUMBER($J59:$DC59),IF(COLUMN($J59:$DC59)>MIN(IF(ISNUMBER($J59:$DC59),COLUMN($J59:$DC59))),{1;1}*COLUMN($J59:$DC59))))),COLUMNS($A:A))))

向下复制并跨越(如果需要,最多到第I列)。

通过定制它以使最多两次返回可以使这种设置更有效。然而,最后,我认为值得推导一个适用于任意数量返回的通用解决方案(此处的范围 - J59:DC59 - 可以根据需要进行扩展)。

此致

**数组公式的输入方式与'标准'相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。

答案 1 :(得分:0)

好的,我会把帮助版本作为替代。

这里简要介绍1: -

enter image description here

和表2只计算所提到的空格并放入一个标志(-1)以显示何时达到一定数量的空格: -

enter image description here

因此,在Sheet2!D2中,如果Sheet1中的相应单元格为空,则以下公式将单元格中的值加1。如果Sheet1中的相应单元格不为空,则在空格数达到某个数字时插入-1(在本例中为4)。

heart-empty

Sheet1!B2中的公式在Sheet2中的相应行中找到第一个-1并索引第1行中的相应标题: -

=IF(Sheet1!D2="",MAX(C2,0)+1,IF(C2>3,-1,0))

Sheet1中的公式!C2找到第二个-1:通过使用SMALL函数中的当前列找到第n个-1,可以使这更加通用。这是一个数组公式,必须使用 Ctrl Shift 输入

输入
=INDEX($A$1:$P$1,SMALL(IF(Sheet2!$D2:$P2<0,COLUMN($D2:$P2)),1))

对于少于2个空单元序列的情况需要进行错误处理。