簡體   English   中英

在其他工作表中查找一列的最大值,並在結果表中報告

[英]Find Maximum Value for a column in different sheets and report it in result sheet

我想檢查Sheet2Sheet3Sheet4Sheet5 Column AA1:A365 ),並找到每個單元格的最大值 比較A1Sheet2Sheet3Sheet4Sheet5 ,發現最大的,並在舉報A1在結果頁面。 同樣在單元格B1報告此最大值的相應工作表。 這繼續到Column AA1: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解決方案,沒有

  1. 將此公式放在Sheet1!A1中: =MAX(Sheet2:Sheet5!A1)
  2. 由於工作表名稱不必靈活(我想假設您不經常更改它),因此可以在B1中使用以下公式:
    \n = IF(Sheet2的!A1 = A1, “Sheet2的”,\n IF(表Sheet 3!A1 = A1, “工作表Sheet”,\n IF(Sheet4!A1 = A1, “Sheet5”\n “Sheet5”)))\n

更具結構性的解決方案 (更適合許多工作表):

如果您有許多工作表,則可以考慮使用這種替代方法。

  1. 在工作表中的某個位置存儲相關工作表的列表。 (在示例中,我將列表放置在E3:E7中)。 將此范圍命名為Sheets (類似於Sidd的恐怖公式,我使用CELL公式動態獲取每個工作表名稱。但是,在靜態模型中這不是必需的)
  2. (與上述步驟1相同):將此公式放在Sheet1!A1中: =MAX(Sheet2:Sheet5!A1)
  3. 將此公式放在A2中:

    =INDEX(Sheets,MATCH(1,COUNTIF(INDIRECT("'"&Sheets&"'!A1"),A1),0))

    將其輸入為數組公式,即按Ctrl - Shift - Enter而不是Enter

我在這里上傳了第二個解決方案。

對此指令表示敬意!

由於打算將公式復制下來,因此您不想在彼得·阿爾伯特公式的INDIRECT中將對單元格A1的引用硬編碼。 您可以使用CELL("address",A1)獲得對A1的引用,而該引用可以向下復制。

您還可以通過使用LOOKUP而不是INDEXMATCH返回結果來避免對數組進行數組輸入。 請注意,如果出現平局, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM