我需要帮助将其转换为 Excel 公式或 VBA 脚本。如果您有任何问题,请告诉我。它需要在从第 2 行开始到第 30 行的每一行上运行。这是第 2 行的示例。此外,如果 J2 中有除 1 或 2 以外的任何字符(包括无字符或空字符),则 M2 也需要保持空白。
if (J2="1" || J2="2"){
if (I2="*(AE)*"){
M2="(AE)"
}
else{
if(I2="*(OT)*"){
M2="(OT)"
}
else{
if(I2="*(OT SP)*" || I2="*(OTSP)*"){
M2="(OT SP)"
}
else{
M2="F"
}
}
}
}
答案1
在 VBA 中,与您的示例等效的是:
If Range("J2").Value = "1" Or Range("J2").Value = "2" Then
If Range("I2").Value Like "*(AE)*" Then
Range("M2").Value = "(AE)"
End If
ElseIf Range("I2").Value Like "*(OT)*" Then
Range("M2").Value = "(OT)"
ElseIf Range("I2").Value Like "*(OT SP)*" Or Range("I2").Value Like "*(OTSP)*" Then
Range("M2").Value = "(OT SP)"
Else
Range("M2").Value = "F"
End If
但是为了使这个循环从第 2 行到第 30 行,我们将添加一个简单的行变量和循环:
theRow = 2
Do
If Range("J" & theRow).Value = "1" Or Range("J" & theRow).Value = "2" Then
If Range("I" & theRow).Value Like "*(AE)*" Then
Range("M" & theRow).Value = "(AE)"
ElseIf Range("I" & theRow).Value Like "*(OT)*" Then
Range("M" & theRow).Value = "(OT)"
ElseIf Range("I" & theRow).Value Like "*(OT SP)*" Or Range("I" & theRow).Value Like "*(OTSP)*" Then
Range("M" & theRow).Value = "(OT SP)"
Else
Range("M" & theRow).Value = "F"
End If
End If
theRow = theRow + 1
Loop Until theRow = 31