簡體   English   中英

Excel 2010 VBA - 根據A列中的名稱計算平均值

[英]Excel 2010 VBA - Calculate average based on name in Column A

我是擅長VBA的人,我一直在尋找幾個小時,我無法弄清楚這一點。 R1C1方法讓我感到困惑(我一直在研究它),但這就是record macro如何啟動公式。

我在Column 1有名稱,我需要對Column 4所有值進行average ,但僅針對每個Name ,然后重復其他名稱。 我希望Column 5的輸出,偏移(0,1)來自“購買日”。 我一直在網上搜索並將我發現的其他例子中的一些代碼放在一起,但我仍然無法得到它。 任何幫助,將不勝感激! 謝謝!

示例表(注意:有沒有辦法插入表?)

在此輸入圖像描述

期望的結果

在此輸入圖像描述

代碼(到目前為止)

Dim LastRow2 As Long
Dim rng As Range
Dim r1 As Long, r2 As Long
Dim lNoRows As Long

LastRow2 = Sheets("Sheet2").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set rng = Sheets("Sheet2").Range("A2:D" & LastRow2)
lNoRows = rng.Rows.Count

For r1 = 1 To lNoRows
    If rng(r1, 4) = "Buy Day" Then
        For r2 = 1 To lNoRows
            If rng(r1, 1) = rng(r2, 1) And r1 = r2 Then _
                rng(r2, 5).FormulaR1C1 = "=AVERAGE(R" & r2 & "C[-1]:R" & r2 & "C[-1])"
        Next r2
    End If
Next r1

Range("K9").FormulaR1C1 = "=Average(R[-7]C[-7]:R[1]C[-7])"

基本上我在頂部平均公式中重新創建的是底部的公式,除了動態,不是特定於一個單元格。 當它立即運行時它只拉入一個值,它不進行任何平均。 在單元格E6中,它顯示=AVERAGE(D$5:D$5)

我看到你已經明白你在問題描述中混淆了行和列。 因此,我將向您展示按照您想要的方式進行的慣用Excel方式:

在此輸入圖像描述

您將在Data> Outline> Subtotal中找到Subtotal工具。

我之前沒有回答過兩次問題,但我覺得盡管我的第一個答案仍然有效,但這個答案更好。 您需要在單元格E2中使用此公式,然后向下復制整個列:

=IF(D2 = "Buy Day", AVERAGEIF($A:$A, A2, $D:$D), "")

它僅取D列中的那些數字的平均值,其中A列中的相應符號與“購買日”行中的符號相同。 它會給你你想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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