简体   繁体   English

Excel公式中的“,X”是什么意思?

[英]What does “,X,” in an Excel formula mean?

I am trying to understand the logic of this Excel formula in particular what the lines with ,"x", mean. 我试图理解此Excel公式的逻辑,尤其是带有“ x”的行的含义。 Can someone help me with pseudo logic or extract the math formula ? 有人可以帮助我伪逻辑或提取数学公式吗?

Excel formula (in part) : Excel公式(部分):

IF(INDEX(TurboCheck,pLookupIndex)="T",
    IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-T_Under_Base,
        IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,pLookupIndex))*T_Over_Base)
    ),
    IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-NT_Under_Base,
        IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,J8))*NT_Over_Base)
    )

) 

Attempting to build it out into (PHP) logic: 尝试将其构建为(PHP)逻辑:

J4 = $mileage
INDEX(BaseMiles,pLookupIndex) = $BaseMiles
T_Under_Base = $T_Under_Base
T_Over_Base = $T_Over_Base
NT_Under_Base = $NT_Under_Base
NT_Over_Base = $NT_Over_Base
INDEX(Max_Mileage,pLookupIndex) = $MaxMiles
INDEX(TurboCheck,pLookupIndex) = $is_turbo



IF($is_turbo) {
    if ($mileage<$BaseMiles) {
        $calc = (($BaseMiles - $mileage) * (-1 * $T_Under_Base));
        if ($mileage > $MaxMiles) {
            $calc = (($mileage - $BaseMiles)*$T_Over_Base)
        }
    }

    else if ($mileage < $BaseMiles)
        $calc = (($mileage - $BaseMiles)  * (-1 * $NT_Under_Base));

        if ($mileage > $BaseMiles) {
            $calc = (($mileage - $BaseMiles) * $NT_Over_Base);
        }
    }

}

Obviously this isn't right but wanted to show what I had so far. 显然这是不对的,但我想展示我到目前为止的情况。

UPDATE: I have this as a working method, I haven't verified it fully yet but wanted to thank everyone for the help! 更新:我将此作为一种有效的方法,但尚未完全验证,但想感谢大家的帮助!

/**
 * Calculate Adjustment - adapted from excel sheet formula:
 *
 *   IF(
 *      IF(INDEX(TurboCheck,pLookupIndex)="T",
 *           IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-T_Under_Base,
 *              IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,pLookupIndex))*T_Over_Base),
 *          IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-NT_Under_Base,
 *          IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,pLookupIndex))*NT_Over_Base))
 *          )
 *          < (-Max_RV_Adj*J3),-Max_RV_Adj*J3,
 *     IF(INDEX(TurboCheck,pLookupIndex)="T",
 *          IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-T_Under_Base,
 *             IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,pLookupIndex))*T_Over_Base)),
 *          IF(J4<INDEX(BaseMiles,pLookupIndex),(INDEX(BaseMiles,pLookupIndex)-J4)*-NT_Under_Base,
 *          IF(J4>INDEX(Max_Mileage,pLookupIndex),"x",(J4-INDEX(BaseMiles,J8))*NT_Over_Base)))
 *   )
 *
 * @param $filters
 * @return array
 */
private function calcAdjustment($filters)
{
    $mileage = $filters['mileage'];
    $BaseMiles = $filters['base'];
    $MaxMiles = $filters['max_mi'];
    $Max_RV_Adj_Pct = (!empty($this->lease_defaults['max_rv_adj'])) ? $this->lease_defaults['max_rv_adj'] : 10; //percentage //
    $BaseRV = $filters['base_residual_value'];
    $adjust = null;


    if ($mileage < $MaxMiles) {
        if ($filters['is_turbo']) {
            $Under_Base = $filters['under_base']['turbo'];
            $Over_Base = $filters['over_base']['turbo'];
        } else {
            $Under_Base = $filters['under_base']['base'];
            $Over_Base = $filters['over_base']['base'];
        }
        if ($mileage < $BaseMiles) {
            $adjust = (($BaseMiles - $mileage) * (-1 * $Under_Base));
        } else {
            $adjust = (($mileage - $BaseMiles) * $Over_Base);
        }
        if ($adjust < (-$Max_RV_Adj_Pct * $BaseRV)) {
            $adjust = (($mileage - $adjust) * $Over_Base);    // can be negative value
        }
    }
    if ($adjust != null) {
        $ret = array("valid" => true, "adjust" => $adjust);
    } else {
        $ret = array("valid" => true, "adjust" => null);
    }
    return $ret;
}
if ($is_turbo == 'T') {
  if ($mileage < $BaseMiles) {
    return (($BaseMiles - $mileage) * (-1 * $T_Under_Base));
  } else {
    if ($mileage > $MaxMiles) {
      return 'x';
    } else {
      return (($mileage - $BaseMiles)*$T_Over_Base);
    }
  }
} else {
  if ($mileage < $BaseMiles) {
    return ($BaseMiles - $mileage) * (-1 * $NT_Under_Base);
  } else {
    if ($mileage > $MaxMiles) {
      return 'x';
    } else {
      return ($mileage - $BaseMiles) * $NT_Over_Base;
    }
  }
}

provided that J8 is pLookupIndex . 假设J8pLookupIndex

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM