2017-07-05 113 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

相關問題