1

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

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

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

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

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

1 ответ1

0

Этот макрос сделает свое дело

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 могут быть настроены в соответствии с вашими потребностями.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .