2016-09-23 54 views
1

獲得最大的價值在Excel中我存儲項目,並對每個項目我知道我使用了多少,有多少我在這樣一個特定的時間了:從細胞的範圍日益擴大在Excel

Item 1 10 
Item 2 20 
Item 2 -10 
Item 2 5 
Item 1 10 
Item 1 -5 

當價值是一個正數時,我知道這是一個收益,當它是負數時,那就是虧損。

有了簡單地使用SUMIF,我可以知道到底是我有多少目前從給定的項目。

不過,我想知道什麼是我遇到過的最大量。在這個例子中,例如,對於項目1,該數字將爲20。我知道我可以在每個項目的不同列中計算部分結果,然後對這些項目使用MAX,但我想找到一個可以用一個方程解決這個問題的解決方案。

回答

1

似乎較新的AGGREGATE¹ function可以使用其循環處理來模仿=SUMIFS(B$2:B2, A$2:A2, A2)的「幫助」列。

在F5作爲標準公式,

=AGGREGATE(14, 6, SUMIFS(OFFSET(B$2, 0, 0, ROW($1:$6), 1), OFFSET(A$2, 0, 0, ROW($1:$6), 1), E5), 1) 

aggregate_sumifs

我通常不改變宗教信仰使用OFFSET function的由於其固有的性質volatile²但重塑範圍總和需要它。


¹AGGREGATE function用Excel 2010中引入的。它是不是在早期版本。

²只要整個工作簿中的任何內容發生變化,即使影響其結果的事情發生變化,也會重新計算揮發性函數。 volatile的示例的功能是INDIRECT,OFFSET,TODAY,NOW,RANDRANDBETWEENCELLINFO工作表函數的一些子函數也會使它們變得不穩定。

+0

請注意,我已經爲* Item 2 *更改了一個值,以便更精確地顯示真實的計算結果。 – Jeeped

+0

這就是我需要的!我不知道這個「新」功能,我很高興你介紹了我。不過,我想問一個問題:我沒有看到用這種方式使用「ROW」。你能告訴我它應該如何工作嗎?正如我所看到的,它會生成一個從1到6的數字數組。但是這不是說我應該將整個方程用作數組函數嗎?如果我把它放到{}中,我的結果沒有什麼不同,但我想知道。在此上下文中的 – Letokteren

+0

[ROW功能](https://support.office.com/en-US/article/ROW-function-3A63B74A-C4D0-4093-B49A-E76EB49A6D8D)不指行TEH工作表上。它生成一個連續的數字數組;例如'1,2,3,4,5,6}'。這用於將SUMIFS範圍重新設置爲「B2:B2,B2:B3,... B2:B7」。 AGGREGATE的某些功能會產生無CSE(如SUMPRODUCT)的循環(aka * array *)計算,** 14 **([LARGE函數](https://support.office.com/en-in/article/large- function-3688ad91-0b0c-43db-8ef8-825a5e5871db))就是其中之一。 – Jeeped

0

您可以爲您的工作表使用VBA代碼添加宏像這樣:

Public itemMax As Integer 

Private Sub Worksheet_Activate() 
    Set itemMax = -1 
End Sub 

Private Sub Worksheet_Change(ByVal target As Range) 
    If Not (Intersect(target, Range("B1:B100")) Is Nothing) Then 
     If IsNumeric(target) Then 
      If target > itemMax Then 
       itemMax = target 
       MsgBox ("New max is: " & CStr(itemMax)) 
      End If 
     End If 
    End If 
End Sub 

在這個例子中,我跟蹤了「全球最大」的itemMax並檢查是否添加任何新的項目計數大於故意設置的低最大值。我認爲你是手動輸入這些值,一個接一個,所以YMMV。

+0

如果可以合理地假定您的[Worksheet_Change](https://msdn.microsoft.com/en-us/library/office/ff839775.aspx)事件宏將被修改,以便itemMax是在工作表上寫的地方,它不會是審慎的公司; UDE是禁用[Application.EnableEvents屬性]行(https://msdn.microsoft.com/en-us/library/office/ff821508.aspx ),以便Worksheet_Change不嘗試在其本身上運行? – Jeeped