2016-08-18 32 views
-1

我希望在Excel中有3個單元格。如何在Excel中找到最大和最小的dyanamic單元格

一個是動態的,最大和最小的單元格。

因此,只要動態值達到最大值,最大單元格應該更新,否則最大值應該保持先前的最高值。

同樣對於最小。

+1

如果您的「動態單元格」實際上是一個列表,並且您只是在同一列中輸入彼此之下的新值(這樣您可以看到值的歷史記錄),那麼這非常簡單,最大值會只是'= MAX(A:A)',最小值就是'= MIN(A:A)'。如果你的意思是「動態單元格」總是相同的單元格,只是獲得一個新的值進入它並覆蓋以前的值(所以沒有值的歷史記錄),那麼這將需要VBA,特別是[Worksheet_Change事件]( https://msdn.microsoft.com/en-us/library/office/ff839775.aspx)。 – tigeravatar

+0

它是後者,每當數據刷新時動態單元格被覆蓋。你已經提到過使用VBA,更具體的使用Worksheet_change事件,你能告訴我怎麼做嗎? –

回答

0

VBA = Visual Basic for Applications。要訪問它,打開Excel並按Alt + F11。在Visual Basic編輯器(VBE)中,雙擊將具有動態單元格的工作表名稱。在這個例子中,它只是Sheet1。雙擊該表名稱後,右側將打開一個代碼窗口。在代碼窗口的頂部,使用兩個下拉選擇工作表(爲了告訴它你想要一個工作表事件),然後改變(告訴它你想要Worksheet_Change事件。它會自動創建一條與Private Sub Worksheet_Change(ByVal Target as Range)一致的行,並且會是這個樣子:

enter image description here

然後,只需複製此代碼並將其粘貼在Private Sub...End Sub線之間,使其與畫面相匹配:

Dim rDynamic As Range 
Dim rMax As Range 
Dim rMin As Range 

Set rDynamic = Me.Range("A1") 
Set rMax = Me.Range("B1") 
Set rMin = Me.Range("C1") 

If Not Intersect(Target, rDynamic) Is Nothing Then 
    If rDynamic.Value < rMin.Value Then rMin.Value = rDynamic.Value 
    If rDynamic.Value > rMax.Value Then rMax.Value = rDynamic.Value 
End If 

並測試它要保存工作簿,您需要使用.xlsm文件f ormat,並且還需要啓用宏(Excel會在保存,關閉和重新打開工作簿後提示您啓用或禁用宏)。

+0

工程就像一個魅力......歡呼聲,並感謝你。 –

相關問題