我正在尝试将此Excel工作表公式转换为Python,但我并不完全了解正在发生的事情。我理解这段代码中的单元格引用和“if(logical_test,[value_if_true],[value_if_false]”格式,但是在尝试理解它时我迷失在这段代码中:
=IF('Sales on Amazon'!$K2="Standard", IF(
AND(
IF(
'Sales on Amazon'!$G2,
14/16,
12/16
)
>='Sales on Amazon'!$E2,
MAX(
'Sales on Amazon'!$B2:$D2
)
<=15,
MIN(
'Sales on Amazon'!$B2:$D2
)
<=0.75,
MEDIAN(
'Sales on Amazon'!$B2:$D2
)
<=12
),
"SML STND",
"LRG STND"
),
IF(
OR(
'Sales on Amazon'!$J2>165,
'Sales on Amazon'!$E2>150,
MAX(
'Sales on Amazon'!$B2:$D2
)>108
),
"SPL OVER",
IF(
'Sales on Amazon'!$J2>130,
"LRG OVER",
IF(
OR(
'Sales on Amazon'!$E2>70,
MAX(
'Sales on Amazon'!$B2:$D2
)>60,
MEDIAN(
'Sales on Amazon'!$B2:$D2
)>30
),
"MED OVER",
"SML OVER")
)
))
答案 0 :(得分:0)
这应该很有趣....所以你有一个名为Sales on Amazon
的数据表,这是引用的。这就是您的数据所在。
K
中的值等于字符串“Standard”,则 2到7 是您{{1> True
的条件声明, 8到17 是 if
条件。 所有这些都必须False
才能为True
True
AND
中的值为G
,则为True
,否则为0.875
,如果该值大于或等于列{{1}中的值}} 列0.75
范围的E
大于或等于max
列B, C, D
范围的15
小于或等于min
列B, C, D
范围的0.75
小于或等于median
这是B, C, D
然后,如果2,3,4和5是12
,AND
其他True
这将结束启动公式的第一个if语句的SML STND
条件。
这会启动启动公式的第一个if语句的LRG STND
条件。
True
语句的条件只有False
True
才有If
。
如果True
列中的值大于J
或者,如果165
列中的值大于E
或列150
范围的max
大于B, C, D
然后,如果有任何108
评估为8, 9, or 10
,那么True
如果它们都是SPL OVER
,那么如果列False
的值大于130,那么J
ELSE 13到16是12的LRG OVER
条件,这是8,9和10的True
条件。
只有一个人需要将整个Or语句的true返回为False
,而17是True
条件。
如果False
列中的值大于E
或列70
范围的max
大于B, C, D
或列60
范围的median
大于B, C, D
然后,如果有任何30
评估为13, 14, or 15
,那么True
其他MED OVER
你有它。
要测试它,只需查看数据并完成这些步骤,看看你得到的答案是否与Excel中的值相同。
我说专栏的原因是我看到公式有SML OVER
$B2
等等。所以我假设这个公式被复制到一列数据的列中。但它只会尊重同一行中这些列的值。