Vba 计算数值并根据案例粘贴到另一张表中

Vba 计算数值并根据案例粘贴到另一张表中,vba,excel,Vba,Excel,我有一张“BW”和另一张“结果”。“工作表结果”有一个表格,表格A列中有工作周编号 我想在工作表“result”中查找weeknumber,如果weeknumber与“AX”列中工作表“BW”中的weeknumber相同,那么我想计算“T”列和“u”列中工作表“BW”中的“1”数 但问题是我有两个例子来计算T列和U列中的“1” 列AA不应等于null Z列应包含“Ontime” 如果这两种情况都满足,那么我想研究T列和U列,不计算列中的1 我试过密码。但情况并不令人满意。任何线索都会有帮助 Su

我有一张“BW”和另一张“结果”。“工作表结果”有一个表格,表格A列中有工作周编号

我想在工作表“result”中查找weeknumber,如果weeknumber与“AX”列中工作表“BW”中的weeknumber相同,那么我想计算“T”列和“u”列中工作表“BW”中的“1”数

但问题是我有两个例子来计算T列和U列中的“1”

  • 列AA不应等于null
  • Z列应包含“Ontime” 如果这两种情况都满足,那么我想研究T列和U列,不计算列中的1

    我试过密码。但情况并不令人满意。任何线索都会有帮助

    Sub results()
    
    Dim i As Integer, j As Integer, cntT As Integer, cntu As Integer, ws As Worksheet
    Set ws = Sheets("Result")
    Sheets("BW").Select
    For i = 2 To WorksheetFunction.CountA(ws.Columns(1))
    cntT = 0
    cntu = 0
    If ws.Range("A" & i) = Val(Format(Now, "ww")) Then Exit For
    Next i
    
    For j = 5 To WorksheetFunction.CountA(Columns(50))
    
    If ws.Range("AA" & i) <> "" And ws.Range("Z" & i) = "PSW Ontime" Then
    ElseIf ws.Range("A" & i) = Range("AX" & j) And Range("T" & j) = 1 Then cntT = cntT + 1
    ElseIf ws.Range("A" & i) = Range("AX" & j) And Range("U" & j) = 1 Then cntu = cntu + 1
    
    Next j
    If cntT <> 0 Then ws.Range("B" & i) = cntT
    If cntu <> 0 Then ws.Range("C" & i) = cntu
    If cntT + cntu <> 0 Then
    ws.Range("D" & i) = cntT + cntu
    ws.Range("E" & i) = cntT / (cntT + cntu)
    ws.Range("F" & i) = cntu / (cntT + cntu)
    End If
    
    ws.Range("E" & i & ":F" & i).NumberFormat = "0%"
    End If
    End Sub
    
    子结果()
    Dim i为整数,j为整数,cntT为整数,cntu为整数,ws为工作表
    设置ws=工作表(“结果”)
    工作表(“BW”)。选择
    对于i=2的工作表function.CountA(ws.Columns(1))
    cntT=0
    cntu=0
    如果ws.Range(“A”&i)=Val(格式(现在为“ww”)),则退出
    接下来我
    对于工作表function.CountA中的j=5(列(50))
    如果ws.Range(“AA”&i)”和ws.Range(“Z”&i)=“PSW Ontime”,则
    如果ws.Range(“A”和i)=Range(“AX”和j)和Range(“T”和j)=1,则cntT=cntT+1
    ElseIf ws.Range(“A”&i)=Range(“AX”&j)和Range(“U”&j)=1然后cntu=cntu+1
    下一个j
    如果cntT为0,则ws.Range(“B”&i)=cntT
    如果cntu为0,则ws.Range(“C”&i)=cntu
    如果cntT+cntu为0,则
    ws.Range(“D”和i)=cntT+cntu
    ws.Range(“E”和i)=cntT/(cntT+cntu)
    ws.Range(“F”和i)=cntu/(cntT+cntu)
    如果结束
    ws.Range(“E”&i&“:F”&i).NumberFormat=“0%”
    如果结束
    端接头
    


    有人能帮助我,我如何在我的代码中介绍这个案例

    将此ws.Range(“Z”&i)=“PSW Ontime”更改为Ucase(ws.Range(“Z”&i))=Ucase(“Ontime”)检查这是否有助于您或将ws.Range(“Z”&i)=“PSW Ontime”替换为Instr(Ucase(ws.Range(“Z”&i)),Ucase(“PSW Ontime”)=true根据您的逻辑,您正在错误地使用If和Else Ifproblem@nishitdey你能给我看一个如何使用的样本吗?@danieltakeshi我该怎么做,那么怎么做?有样本吗?