Vba 在未知数量的相同行中平均和添加数据
我的数据基本上是这样的Vba 在未知数量的相同行中平均和添加数据,vba,excel,merge,average,Vba,Excel,Merge,Average,我的数据基本上是这样的 URL页面浏览量唯一页面浏览量平均时间入口反弹率%Exit aaa81.0480.80.6 AAA 5 3 0.80 10 0.9 0.6 AAA 105 1.11 81 0.6 AAA 7 2 0.50 4 0.8 0.6 BB 12 1 0.37 10 0.75 0.6 BB 42 0.76 30.9 0.6 我想将所有相同的URL合并为一行,并对页面浏览/唯一页面浏览/入口列数据求和,并平均平均平均时间/反弹率/%退出列 整个表中相同行的数量各不相同 这是我目前掌
URL页面浏览量唯一页面浏览量平均时间入口反弹率%Exit
aaa81.0480.80.6
AAA 5 3 0.80 10 0.9 0.6
AAA 105 1.11 81 0.6
AAA 7 2 0.50 4 0.8 0.6
BB 12 1 0.37 10 0.75 0.6
BB 42 0.76 30.9 0.6
我想将所有相同的URL合并为一行,并对页面浏览/唯一页面浏览/入口列数据求和,并平均平均平均时间/反弹率/%退出列
整个表中相同行的数量各不相同
这是我目前掌握的代码。我是vba新手,尝试用二维数组解决这个问题,但得到的下标超出了范围
Sub Data()
Dim Ws As Worksheet
Dim tbl As ListObject
Dim lastRow As Long, k As Long, t As Long
Dim arr() As Long
Set Ws = ThisWorkbook.Worksheets("Data")
Set tbl = Ws.ListObjects("Table9")
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For t = 1 To lastRow
arr(0, 1) = Ws.Cells(t, 2).Value
Do Until Ws.Cells(t, 1).Value <> Ws.Cells(t + 1, 1).Value
k = k + 1
t = t + 1
ReDim Preserve arr(k - 1, 5) As Long
arr(k - 1, 5) = Ws.Cells(k - 1, 5).Value
Loop
Cells(t - k, 2) = Application.WorksheetFunction.Sum(arr)
Cells(t - k, 3) = Application.WorksheetFunction.Sum(arr)
Cells(t - k, 4) = Application.WorksheetFunction.Average(dataArray)
Cells(t - k, 5) = Application.WorksheetFunction.Sum(arr)
Cells(t - k, 6) = Application.WorksheetFunction.Average(dataArray)
Cells(t - k, 7) = Application.WorksheetFunction.Average(dataArray)
Rows(t - k + 1 & k - 1, 5).EntireRow.Delete shift:=xlShiftUp
t = t - k
k = 0
Next t
Set tbl = Nothing
End Sub
子数据()
将Ws设置为工作表
作为ListObject的Dim tbl
变暗最后一行一样长,k一样长,t一样长
Dim arr()的长度与
设置Ws=ThisWorkbook.Worksheets(“数据”)
Set tbl=Ws.ListObjects(“表9”)
lastRow=单元格(Rows.Count,“A”).End(xlUp).Row
对于t=1到最后一行
arr(0,1)=Ws.Cells(t,2).值
直到Ws.Cells(t,1)为止。值Ws.Cells(t+1,1)。值
k=k+1
t=t+1
ReDim将arr(k-1,5)保持为
arr(k-1,5)=Ws.Cells(k-1,5).Value
环
单元格(t-k,2)=Application.WorksheetFunction.Sum(arr)
单元格(t-k,3)=Application.WorksheetFunction.Sum(arr)
单元格(t-k,4)=应用程序.工作表函数.平均值(数据数组)
单元格(t-k,5)=Application.WorksheetFunction.Sum(arr)
单元格(t-k,6)=应用程序.工作表函数.平均值(数据数组)
单元格(t-k,7)=应用程序.工作表函数.平均值(数据数组)
行(t-k+1&k-1,5).EntireRow.Delete shift:=xlShiftUp
t=t-k
k=0
下一个t
设置tbl=无
端接头
我非常感谢您在这方面提供的任何帮助,我已经被困了一段时间。好的,我做了一些研究,您宣布阵列可以,但它需要重新标注为多维大小
Dim arr() As Long
Redim arr(1,1)
您可以通过数据透视表来实现这一点。您的解决方案需要在VBA中吗?最好是这样,我正在尝试自动生成一个报告,以便在输入数据后完成所有工作如果您发现VBA错误,请使用
undo
祝您好运。。。当数据透视表可以随时刷新且不会覆盖原始值时:p超出范围错误出现在arr(0,1)=Ws.Cells(t,2).Value
抱歉,我应该提到这一点,这是有意义的,我不知道为什么,但它给了我一个错误,说它期待一个表达谢谢!成功了。现在我只是在行(t-k+1&k-1)上得到一个不匹配的错误。EntireRow.Delete shift:=xlShiftUp
你能解释一下这个命令应该做什么吗?我不熟悉它是的,它应该删除所有具有相同URL的行,只有在合并数据后的第一行除外