Как использовать макрос для группировки и усреднения значений в столбце Excel?

Я новичок здесь, и я боролся с макро письменной форме. Мне было интересно, может ли кто-нибудь помочь мне сделать/объяснить макрос, который можно использовать в моем наборе данных.

У меня есть файл Excel, который выглядит так:

enter image description here

Я в основном хочу макрос, который будет проходить через колонку "фрукты", признать, что в качестве отдельного плода, то среднее свежесть этого плода на основе их "группы", а затем укажите среднее значение и группу рядом с первой ячейкой каждой группы.

Я чувствую, что это простой макрос, но я не могу понять это. Как это может быть сделано?

спасибо! Это ценится!

13
задан Excellll
12.01.2023 9:12 Количество просмотров материала 2670
Распечатать страницу

1 ответ

этот макрос сделает трюк

Public Sub itemaverages()
    Dim wks As Worksheet
    Set wks = ActiveSheet
    firstrow = 2
    resultcolumn = 6
    titletext = "AVG"
    resultrow = firstrow
    searching = True
    lastitemname = wks.Cells(firstrow, 1)
    lastitemfresh = wks.Cells(firstrow, 2)
    lastitemgroup = wks.Cells(firstrow, 3)
    itemtotal = lastitemfresh
    therow = firstrow + 1
    While searching
        countitem = 1
        sameitem = True
        While sameitem
            itemname = wks.Cells(therow, 1)
            itemfresh = wks.Cells(therow, 2)
            itemgroup = wks.Cells(therow, 3)
            If itemname <> "" Then
                If (itemname = lastitemname) And (itemgroup = lastitemgroup) Then
                    itemtotal = itemtotal + itemfresh
                    countitem = countitem + 1
                    therow = therow + 1
                    lastitemname = itemname
                    lastitemfresh = itemfresh
                    lastitemgroup = itemgroup
                Else
                    averagename = UCase(lastitemname) & " " & titletext
                    averagefresh = itemtotal / countitem
                    wks.Cells(resultrow, resultcolumn).Value = averagename & " " & averagefresh
                    wks.Cells(resultrow, resultcolumn + 1).Value = lastitemgroup
                    sameitem = False
                    lastitemname = itemname
                    lastitemfresh = itemfresh
                    lastitemgroup = itemgroup
                    itemtotal = itemfresh
                    resultrow = therow
                    therow = therow + 1
                End If
            Else
                sameitem = False
                searching = False
            End If
        Wend
    Wend
    a = MsgBox("Finished", vbInformation)
End Sub

открыть VBA / Macros с помощью Alt+F11, вставить новый модуль в ThisWorkbook и вставьте этот код справа.

переменные firstrow и resultcolumn может быть изменен в соответствии с вашими потребностями.

0
отвечен jcbermu 2023-01-13 17:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх