2016-07-26 81 views
1

我正試圖找到一種方法來做到這一點。在這一刻。我將多個數據集導入到電子表格中。我有兩個透視表,彼此垂直設置。頂部水平是所有測試名稱,垂直是日期列表。基於動態範圍擴展en Excel的Forumula單元格

日期根據從查詢中拉入的數據點的數量而變化,因此範圍會不斷變化。

通過使用以下代碼將數據分揀到這兩個中。

=IF(SUMPRODUCT((Sheet3!$B$4:$B$174=E$3)*(Sheet3!$C$4:$C$174=$B10)*(Sheet3!$E$4:$E$174))>0,SUMPRODUCT((Sheet3!$B$4:$B$174=E$3)*(Sheet3!$C$4:$C$174=$B10)*(Sheet3!$E$4:$E$174)),"") 

最終結果是數據按照這種格式排序到適當的數據/測試對中。

我遇到了一個問題,因爲我需要能夠擴展數據排序公式的受影響的區域,而不是無限期地在行下擴展它。

我試圖使用這個VBA宏,但意圖是不拉下EXACT公式,它是擴展公式,因爲Excel會擴展它,更改允許更改的項目,例如行和列來更改數據排序條件。

Sub aTest() 
With Sheets("Sheet2") 
    .Range("c4:c" & .Cells(.Rows.Count, "B").End(xlUp).Row).Formula = "=Len(B4)" 
End With 
End Sub 

這不起作用,因爲它將公式完全複製下來。

預先感謝您。

回答

0

使用.FormulaR1C1方法,我認爲應該做的伎倆,它應該考慮偏移單元格引用。

Sub aTest() 
    With Sheets("Sheet2") 
     .Range("c4:c" & .Cells(.Rows.Count, "B").End(xlUp).Row).FormulaR1C1 = "=Len(R[0]C[-1])" 
    End With 
End Sub 

的方括號使參考相對,所以"=Len(R[0]C[-1])"是指一個塔之前和零行向下