Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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
Excel 通过求和和和删除合并重复条目_Excel_Vba - Fatal编程技术网

Excel 通过求和和和删除合并重复条目

Excel 通过求和和和删除合并重复条目,excel,vba,Excel,Vba,我有一份包含以下信息的工作表 Date | Min Worked | Job Number 2/4/2015 500 123 2/4/2015 100 123 2/4/2015 200 321 2/5/2015 300

我有一份包含以下信息的工作表

Date      |      Min Worked      |      Job Number
2/4/2015           500                     123
2/4/2015           100                     123
2/4/2015           200                     321
2/5/2015           300                     321
2/5/2015           100                     123
2/5/2015           100                     123
我想结合分钟工作的任何条目与相同的日期和工作编号,并删除多余的。因此,在运行VBA之后,它将如下所示

Date      |      Min Worked      |      Job Number
2/4/2015           600                     123
2/4/2015           200                     321
2/5/2015           300                     321
2/5/2015           200                     123

我尝试过的代码没有成功。任何帮助都将不胜感激

tigeravatar正确地认为,通过访问查询实现这一点是最好的方法(更易于维护)。如果您确实需要/想要在VBA中执行此操作,则需要执行以下操作:

Sub Condense()
    Dim i as long
    Dim ref as string
    Dim total as long 'switch to double if Min can have fractional values
    Dim o as long

    Application.ScreenUpdating = False 'Just always a good practice to use this
    i = 2 'assumes you have headers in row 1, if not use 1
    Do while Range("A" & i).value <> "" 'Assumes Dates are in column A
        If ref = Range("A" & i).value & "-" & Range("C" & i).value then
            'Match, update total
            total = total + Range("B" & i).Value

            'Remove the duplicate row. Note in this case we don't update i as what is currently the i+1 -th row becomes row i after the delete
            Range(i & ":" & i).EntireRow.Delete
        Else
            'Check for macro just starting
            If o <> 0 then
                'new Date-Job combo. Output current total
                Range("B" & o).value = total
            End If 'else we're on the first time through the loop and just need to update o & ref
            'Update o & ref
            o = i
            ref = Range("A" & i).value & "-" & Range("C" & i).value
        End If
        'Update i
        i = i + 1
        End If
    Loop

Application.ScreenUpdating = True
End Sub
次压缩()
我想我会坚持多久
作为字符串的Dim ref
如果最小值可以有分数,则将“Dim total as long”切换为双倍
暗淡如长
Application.ScreenUpdating=False“使用此选项始终是一个很好的做法
i=2'假设第1行有标题,如果不使用1
Do while Range(“A”&i).值“”假定日期在A列中
如果ref=Range(“A”&i).value&“-”和Range(“C”&i).value,则
'匹配,更新总数
总计=总计+范围(“B”和i)。值
'删除重复的行。注意,在这种情况下,我们不更新i,因为当前的i+1行在删除后变成了i行
范围(i&“:”&i).EntireRow.Delete
其他的
'检查宏是否刚刚启动
如果0,那么
'新日期作业组合。输出总电流
范围(“B”和“o”)。值=总计
结束如果'否则我们第一次通过循环,只需要更新o&ref
'更新o&ref
o=i
ref=范围(“A”&i).值&“-”和范围(“C”&i).值
如果结束
"更新一"
i=i+1
如果结束
环
Application.ScreenUpdating=True
端接头

请在这个问题中尽可能多地包含您已经尝试过的内容和没有成功的内容的信息,最好是包含代码。这听起来像是可以使用数据透视表总结的布局类型。有什么理由不使用数据透视表吗?这必须在VBA中完成,因为它将是更长的代码字符串的一部分。所有数据都是通过VBA从Access导入的。这是一个每天都要运行的过程,我希望尽可能多地保持自动化。我打算将此代码附加到导入数据的代码末尾,以便以正确的格式显示。如果它来自Access,为什么不在已经执行此操作的表上运行查询?类似于
按table.Date、table.JobNumber从表组中选择table.Date、SUM(table.MinWorked)、table.JobNumber应该会产生你想要的结果。然后,您可以将该查询数据导入Excel,并且已经对其进行了重复数据消除和汇总。从基础数据(如有必要,在隐藏的工作表上)创建一个透视表,并将该汇总数据用作未来计算的基础。