2016-02-26 37 views
0

所以,爲了方便起見,我在A1,A2,A3單元格中有一系列數字,僅爲方便3。它們是隨機創建的,因此可以是0和1的任意組合。 我需要找到在任何時刻發生的1的最大數目,並將值設置爲A4。 例如:在隨機系列數字中計算項目的最大發生次數

時刻t1:(A1,A2,A3)爲(0,0,0) - >結果=(A4)爲0,因爲沒有圖1是有]
時刻t2:時間t1:(A1,A2,A3)爲(1,1,0)→結果=(A4)爲2 [因爲有2 1大於0(在t1處)]
時間t3:時間t1:(A1,A2,A3)爲(1,1,1)→結果=(A4)爲3 [因爲有3個大於0的時間(在t2處)]
時間t4: (A1,A2,A3)是(0,1,0) - > result =(A4)是3 [因爲只有一個小於3 (在T3)

所以最終的結果是3

我怎樣才能做到這一點?

謝謝

+0

我們在談論什麼樣的時間間隔?即A1,A2,A3中的值多久改變一次? – Ditto

+0

值(A1,A2,A3)正在根據用戶輸入進行計算。 – vaibhav

回答

0

好吧,試試這個大小。在任何給定的時間首先獲得所有的人的數量,如:

COUNTIF(A1:A3,1) 

然後,你想有一個正在運行的「最大值」單元格(假設單元A4),它可以檢查以驗證它是更大比目前的計數。這可以通過宏腳本完成。右鍵單擊您的Excel選項卡,選擇「查看代碼」,並輸入驗證碼到代碼窗口:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 
Dim OldValue As Range 
Dim MaxValue As Range 

Set KeyCells = Range("A1:A3") 
Set OldValue = Range("A4") 'this is the current count of ones 
Set MaxValue = Range("A6") 'this is the overall max number of ones 

If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
     Is Nothing Then 

    ' Display a message when one of the designated cells has been 
    ' changed. 
    ' Place your code here. 
    If OldValue > MaxValue Then 
     MaxValue = OldValue 
    End If 

End If 
End Sub 

當你在代碼窗口中完成,選擇基於對意見的反饋file > close and return to microsoft excel

+0

這不符合他的要求,你必須考慮到所有的時間。 – Ditto

0

,我會建議如下:

1)在單元格中放置一個「0」值:B1。

2)在A4單元格,把這個公式:(非常類似於W3AVE的答案)..

=MAX(B1,COUNTIF(A1:A3,1)) 

本質上講,你需要存儲的最高值,到目前爲止,以適應您必須監控額外的要求價值觀在所有時間。

更新之後,您需要將A4(僅限於值)複製到B1。 您可以手動執行此操作,或者使用小型VBA腳本來執行此操作。

但是由於它是在用戶輸入上更新的,因此快速複製(僅限於值)似乎是最簡單的解決方案。

+0

在excel中是否有函數僅複製沒有vba的值或手動? – vaibhav

+0

當您手動複製時,「paste => special」..並僅選擇值。如果您想查看VBA代碼,請創建一個宏,並進行復制,然後查看宏代碼;) – Ditto

0

這裏有一個用戶定義函數來完成你在單個單元格想要的東西:

=HighestNumber(A1:A3,1)

把它從一個細胞只要注意:如果您關閉該工作簿以前的「最大」值被破壞,下次打開時重新計算函數。

相關問題