[英]Find Maximum Value for a column in different sheets and report it in result sheet
我想檢查Sheet2
, Sheet3
, Sheet4
和Sheet5
Column A
( A1:A365 ),並找到每個單元格的最大值 。 比較A1
在Sheet2
, Sheet3
, Sheet4
和Sheet5
,發現最大的,並在舉報A1
在結果頁面。 同樣在單元格B1
報告此最大值的相應工作表。 這繼續到Column A
( A1:A365 )
我使用的以下代碼:
Worksheets("sheet2").Range("A1").Value = a
Worksheets("sheet3").Range("A1").Value = b
Worksheets("sheet4").Range("A1").Value = c
Worksheets("sheet5").Range("A1").Value = d
MaxValue = Application.Max(a, b, c, d)
Range("A1").Value = MaxValue
是的,我只有4張紙-Mohsen 11分鍾前
非VBA解決方案
在Sheet1的單元格A1中,輸入以下公式
=MAX(Sheet2!A1,Sheet3!A1,Sheet4!A1,Sheet5!A1)
在Sheet1的單元格B1中,輸入此令人恐懼的公式。 我敢肯定,找到工作表名稱的方法更好。
=IF(Sheet1!A1=Sheet2!A1,RIGHT(CELL("filename",Sheet2!A1),LEN(CELL("filename",Sheet2!A1))- FIND("]",CELL("filename",Sheet2!A1),1)),IF(Sheet1!A1=Sheet3!A1,RIGHT(CELL("filename",Sheet3!A1),LEN(CELL("filename",Sheet3!A1))- FIND("]",CELL("filename",Sheet3!A1),1)),IF(Sheet1!A1=Sheet4!A1,RIGHT(CELL("filename",Sheet4!A1),LEN(CELL("filename",Sheet4!A1))- FIND("]",CELL("filename",Sheet4!A1),1)),IF(Sheet1!A1=Sheet5!A1,RIGHT(CELL("filename",Sheet5!A1),LEN(CELL("filename",Sheet5!A1))- FIND("]",CELL("filename",Sheet5!A1),1)),""))))
不過要小心 。 要使用RIGHT(CELL("filename",Sheet2!A1),LEN(CELL("filename",Sheet2!A1))- FIND("]",CELL("filename",Sheet2!A1),1))
,您需要保存工作簿。
我的Sheet2,A1有1
,Sheet3,A1有2
,Sheet4,A1有2.5
,Sheet5,A1有3
VBA解決方案
Sub Sample()
Dim ws As Worksheet
Dim i As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.Range("A1:A365").Formula = "=MAX(Sheet2!A1,Sheet3!A1,Sheet4!A1,Sheet5!A1)"
.Range("A1:A365").Value = .Range("A1:A365").Value
For i = 1 To 365
Select Case .Range("A" & i)
Case ThisWorkbook.Sheets("Sheet2").Range("A" & i).Value: .Range("B" & i).Value = "Sheet2"
Case ThisWorkbook.Sheets("Sheet3").Range("A" & i).Value: .Range("B" & i).Value = "Sheet3"
Case ThisWorkbook.Sheets("Sheet4").Range("A" & i).Value: .Range("B" & i).Value = "Sheet4"
Case ThisWorkbook.Sheets("Sheet5").Range("A" & i).Value: .Range("B" & i).Value = "Sheet5"
End Select
Next i
End With
End Sub
快速解決方案
: 根據Sidd的回答,這是我的非VBA解決方案,沒有 :
=MAX(Sheet2:Sheet5!A1)
\n = IF(Sheet2的!A1 = A1, “Sheet2的”,\n IF(表Sheet 3!A1 = A1, “工作表Sheet”,\n IF(Sheet4!A1 = A1, “Sheet5”\n “Sheet5”)))\n
更具結構性的解決方案 (更適合許多工作表):
如果您有許多工作表,則可以考慮使用這種替代方法。
Sheets
。 (類似於Sidd的恐怖公式,我使用CELL公式動態獲取每個工作表名稱。但是,在靜態模型中這不是必需的) =MAX(Sheet2:Sheet5!A1)
=INDEX(Sheets,MATCH(1,COUNTIF(INDIRECT("'"&Sheets&"'!A1"),A1),0))
將其輸入為數組公式,即按Ctrl - Shift - Enter而不是Enter 。
我在這里上傳了第二個解決方案。
對此指令表示敬意!
由於打算將公式復制下來,因此您不想在彼得·阿爾伯特公式的INDIRECT
中將對單元格A1
的引用硬編碼。 您可以使用CELL("address",A1)
獲得對A1
的引用,而該引用可以向下復制。
您還可以通過使用LOOKUP而不是INDEX
& MATCH
返回結果來避免對數組進行數組輸入。 請注意,如果出現平局, LOOKUP
將返回帶有最大值的最后一個工作表的名稱。
以下公式使用命名范圍表和每個工作表的名稱
=MAX(Sheet2:Sheet5!A1) returns max value (identical to Peter Albert's formula)
=LOOKUP(2,1/COUNTIF(INDIRECT("'" & Sheets & "'!" & CELL("address",A1)),A1),Sheets) returns name of sheet with max value
制作兩張新紙,一張名為“ First ”,另一張為“ Last ”。 通過包含宏的按鈕為您的項目創建新工作表,該宏用於在“ 第一和最后 ”之間添加重復的工作表。 然后,只需在您的報告單元格中輸入以下簡單公式之一: =SUM(First:Last!K28)
或=MAX(First:Last!K28)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.