Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 依赖于相对单元格的Excel条件和_Vba_Excel - Fatal编程技术网

Vba 依赖于相对单元格的Excel条件和

Vba 依赖于相对单元格的Excel条件和,vba,excel,Vba,Excel,我有一份工作表,上面有3名不同的工作人员。每个员工都有自己的工作表,上面有他们每周为之工作的所有客户。我目前有一个工作宏,它将获取用户输入的客户代码,然后搜索每个工作人员并生成一个客户摘要,该摘要如下所示 Client Code Job Time Staff BW01 Some work 5 Tim BW01 Some work

我有一份工作表,上面有3名不同的工作人员。每个员工都有自己的工作表,上面有他们每周为之工作的所有客户。我目前有一个工作宏,它将获取用户输入的客户代码,然后搜索每个工作人员并生成一个客户摘要,该摘要如下所示

Client Code         Job               Time       Staff       
BW01                Some work         5          Tim
BW01                Some work         4          Tim
BW01                Some work         7.5        Jason
BW01                Some work         8          Frank
BW01                Some work         2.75       Frank
我正在寻找一种方法来搜索这个列表,并将每个人的时间加起来。因此,蒂姆将是9小时,例如杰森7.5,弗兰克10.75。我通过以下代码实现了这一点

Sub totalTime()

Dim i As Long
For i = Range("I" & Rows.Count).End(3).Row To 1 Step -1
    If Range("I" & i) <> Range("I" & i + 1) Then
    Rows(i + 1).Insert
End If
Next i
    For Each numrange In Columns("G").SpecialCells(xlConstants, xlNumbers).Areas
        SUMADDR = numrange.Address(False, False)
        numrange.Offset(numrange.Count, 0).Resize(1, 1).Formula = "=SUM(" & SUMADDR & ")"
        c = numrange.Count
    Next numrange
NoData:
Columns(3).Value = Columns(3).Value
End Sub
Sub-totalTime()
我想我会坚持多久
对于i=范围(“i”和Rows.Count)。结束(3)。行到1步骤-1
如果范围(“I”&I)范围(“I”&I+1),则
行(i+1)。插入
如果结束
接下来我
对于列(“G”)中的每个numrange。特殊单元格(xlConstants,XLNumber)。区域
SUMADDR=numrange.Address(False,False)
numrange.Offset(numrange.Count,0)。调整大小(1,1)。公式=“=SUM(&SUMADDR&”)
c=numrange.Count
下一个努姆兰奇
野田:
列(3).值=列(3).值
端接头
因为这是我能想到的唯一方法,但总时间需要在别处打印,所以希望不要添加新的行方法,如果可能的话,将每个人的总时间存储在一个数组中

很明显,我不是在要求别人这么做,我只是想不出一个办法,如果有人有更好的方法,我会非常感激


非常感谢。

如果您仍然想使用VBA,您可以执行下面的代码。我粘贴了你的数据,我的数据范围是A1:F6。代码检查Staff列中的所有单元格,如果Staff是Tim、Frank或Jason,则添加他的工作时间。最后,它显示了给定单元格中的总时间。注意数字应该用逗号书写(或者使用一些时间格式),所以我提供了替换属性

Sub TotalTime_Staff()

Dim lastrow As Long, staff_member As String
Dim TimeTim As Double, TimeJason As Double, TimeFrank As Double

lastrow = Worksheets("Arkusz1").Cells(1, 4).End(xlDown).Row


For i = 1 To lastrow

    With Worksheets("Arkusz1")

        staff_member = .Cells(i, 4).Value

        .Cells(i, 3) = Replace(.Cells(i, 3), ".", ",")

        Select Case staff_member

            Case "Tim"
                TimeTim = TimeTim + .Cells(i, 3)

            Case "Jason"
                TimeJason = TimeJason + .Cells(i, 3)

            Case "Frank"
                TimeFrank = TimeFrank + .Cells(i, 3)

        End Select

    End With

Next i

With Worksheets("Arkusz1")
    .Cells(1, 6) = TimeTim
    .Cells(2, 6) = TimeJason
    .Cells(3, 6) = TimeFrank
End With

End Sub

你知道吗?我没有考虑过,但这可以很好地满足我的要求!我试试看,谢谢!