2017-07-05 98 views
0

基本上,我有这个公式的单元格在一行中返回的第一个非0值:Excel中 - 如何创建一个公式的单元格返回另一个公式的结果右侧

=INDEX('Financials Cashflow Year'!C30:M30,MATCH(TRUE,INDEX('Financials Cashflow Year'!C30:M30<>0,),0))

我想要一个公式来返回这个第一个公式拾取的单元格右边的单元格的值。

说我们有片1个第一行:

0 0 0 4 3 2 

表2,我想看到的公式。可扩展的东西。

4 3 2 
+2

你能使用相同的INDEX()函数,但与COLUMN_NUMBER栏改变? –

+0

@ D.R。我认为他希望所有的单元格都是正确的(基于具有6列的例子,输出是4-6行),这需要比这更多的代码,但这绝对是一个简单而优秀的解决方案,用于书面问题/标题。 – Cyril

+0

@Daniel_Coutinho,你有固定的列数,或者数据如何坐?不确定是否需要使用动态范围,或者是否可以处理固定范围的6列(如示例)。 – Cyril

回答

0

我想你会想要一个数组公式为此。取而代之的是比赛用一个小功能,让你想要的项目,像这样:

={INDEX('Financials Cashflow Year'!$C30:$M30,1,SMALL(IF('Financials Cashflow Year'!$C30:$M30>0,COLUMN('Financials Cashflow Year'!$C30:$M30)),2)-2)} 

IF函数获取列数其中行的值大于零的数组。

然后,小函数的第2个参数将返回第二个最左边的列中值不为零的单元格的值。

I.e.在上面的例子中,它会带回3,同样如果将参数更改为1,它将带回4.

If语句获取索引值大于零的值的列号。

注意:击中组合键Ctrl + Shfit + Enter提交,而不仅仅是进入 注2:我注意到您在一整行工作,所以我认为你需要的小

前的“1”
0
=INDEX(C30:M30,MATCH(TRUE,INDEX(C30:M30<>0,),0)+1) 

会给你的第一个公式右边的单元格的值,但因为它看起来像你正在寻找更动态的东西,这不会工作得非常好,对于单元格2在第一个配方的右边,你需要这个:

=INDEX(C30:M30,MATCH(TRUE,INDEX(C30:M30<>0,),0)+2) 

用于抓住出所有细胞对示出的公式的右侧将是VBA任一变调和过滤或使用VBA,例如最好的办法:

Sub toRightOfZeros() 

    Dim rng, cell As Range 
    Dim startCellCol, destCellLocX As Integer 
    Dim ValsArr() As String 
    Dim wb As Workbook 
    Dim foundNotZero As Boolean 

    Set wb = ThisWorkbook 
    destCellLocX = 1 
    foundNotZero = False 

    With wb.Sheets("Sheet1") 
     Set rng = .Range(.Cells(30, 3), .Cells(30, 13)) 
    End With 

    For Each cell In rng 
     If foundNotZero = False Then 
      If Not cell.Value = 0 Then 
       foundNotZero = True 
       startCellCol = cell.Column 
       Exit For 
      End If 
     End If 
    Next 

    With wb.Sheets("Sheet1") 
     Set rng = .Range(.Cells(30, startCellCol), .Cells(30, 13)) 
    End With 

    For Each cell In rng 
     With wb.Sheets("Sheet2") 
      .Cells(1, destCellLocX).Value = cell.Value 
     End With 
     destCellLocX = destCellLocX + 1 
    Next 

End Sub 

输入(在C30:M30):0 0 0 0 365 788 940 239 12 0 99

输出(表2):365 788 940 239 12 0 99

相关问题