将Excel字段中的值与if条件相乘

时间:2018-10-19 07:01:11

标签: excel if-statement conditional-statements

这是我的excel示例,我需要在NEW COST列中获取值

My excel example

  1. 如果产品名称中的字符串包含(),并且方括号中的字样是:pck,pcs,pack或pots,则新成本将与cost相同值

  2. 如果不输入并且数量大于0,则新成本为Cost * Quantity。如果满足此条件,则应创建一个新列,写上“这是新成本”。

  3. 如果“数量”为0,则新成本与成本相同。

有人可以帮我创建公式吗?

2 个答案:

答案 0 :(得分:1)

假设“产品名称”在A1中,则可以将此公式粘贴到D2中:

    =IF(AND(IF(IFERROR(FIND("(";A2;1);0)=0;0;1);OR(IF(IFERROR(FIND("pack";A2;1);0)=0;0;1);
IF(IFERROR(FIND("pck";A2;1);0)=0;0;1);IF(IFERROR(FIND("pcs";A2;1);0)=0;0;1);
IF(IFERROR(FIND("pots";A2;1);0)=0;0;1)));C2;C2*B2)

如果E列中可能包含“这是新成本”,则将其粘贴到E2中:

=IF(C2=D2;"This is new cost")

答案 1 :(得分:0)

尝试:

Sub Evaluation()

Dim LastRow As Long
Dim i As Long

Dim Result As Integer

LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To LastRow
    If Sheet1.Range("A" & i).Value <> "" Then
        If (InStr(Sheet1.Range("A" & i).Value, "(") > 0) And (InStr(Sheet1.Range("A" & i).Value, ")") > 0) Then
            If (InStr(Sheet1.Range("A" & i).Value, "pck") > 0) Or (InStr(Sheet1.Range("A" & i).Value, "pcs") > 0) Or (InStr(Sheet1.Range("A" & i).Value, "pack") > 0) Or (InStr(Sheet1.Range("A" & i).Value, "pots") > 0) Then
                Sheet1.Range("A" & i).Offset(0, 3).Value = Sheet1.Range("A" & i).Offset(0, 2).Value
            End If
        ElseIf Sheet1.Range("A" & i).Offset(0, 1).Value > 0 Then
            Sheet1.Range("A" & i).Offset(0, 3).Value = Sheet1.Range("A" & i).Offset(0, 2).Value * Sheet1.Range("A" & i).Offset(0, 1).Value
        ElseIf Sheet1.Range("A" & i).Offset(0, 1).Value = 0 Then
            Sheet1.Range("A" & i).Offset(0, 3).Value = Sheet1.Range("A" & i).Offset(0, 2).Value
        End If
    End If
Next i

End Sub