Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在未知数量的相同行中平均和添加数据_Vba_Excel_Merge_Average - Fatal编程技术网

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的行,只有在合并数据后的第一行除外