如何根据值选择“A”列中的行并对“F”列中的相应单元格执行操作?

时间:2015-01-07 21:31:49

标签: excel excel-vba excel-formula vba

我迷失了如何完成这项任务,所以任何帮助都将受到赞赏。我有一个大约9000行的电子表格(下面显示的代码段),我正在尝试执行以下操作:

1)如果A列中的值相同,则选择G列中的单元格并合并选定的单元格。 2)如果A列中的值相同,则选择F列中的单元格,找到所选单元格的平均值,并在上面任务1的合并单元格中输入结果。

我试图通过Excel中的宏来实现这一点,但是,我缺乏编程/脚本技能来获得理想的结果。

1.   A    B     C     D     E     F     G
2. 21004    High   date1   date2   date3   51
3. 21004    High   date1   date2   date3   51
4. 21004    High   date1   date2   date3   51
5. 21004    High   date1   date2   date3   60
6. 21003    High   date1   date2   date3   21
7. 21003    High   date1   date2   date3   44
8. 21011    High   date1   date2   date3   55
9. 21011    High   date1   date2   date3   58
10. 21405    High   date1   date2   date3   91
11. 21405    High   date1   date2   date3   36

1 个答案:

答案 0 :(得分:0)

Sub AverageFinG()
    Dim topA As Range, bottomA As Range, sliceF As Range, sliceG As Range
    Set topA = Cells(1, 1)
   Do Until IsEmpty(topA.Value)
        Set bottomA = topA
        Do While bottomA.Offset(RowOffset:=1).Value = bottomA.Value
            Set bottomA = bottomA.Offset(RowOffset:=1)
        Loop

        Set sliceF = Range(topA, bottomA).Offset(ColumnOffset:=5)
        Set sliceG = sliceF.Offset(ColumnOffset:=1)
        sliceG.Merge
        sliceG.Formula = "=AVERAGE(" + sliceF.Address + ")"

        Set topA = bottomA.Offset(RowOffset:=1)
    Loop
End Sub