【问题标题】:Can someone explain this excel worksheet formula in a logical progression?有人可以按逻辑顺序解释这个 Excel 工作表公式吗?
【发布时间】:2015-07-16 03:23:11
【问题描述】:

我正在尝试将此 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")
  )
))

【问题讨论】:

  • 我认为这部分有问题。 IF('亚马逊销售'!$G2, 14/16, 12/16 ) >='亚马逊销售'!$E2,你能检查并转发吗?您还可以在帖子中放置公式的内联副本,因为它可以更轻松地复制并粘贴到 Excel 中进行试用。
  • 除非 G2 中的值是布尔值,在这种情况下,它会评估为真或假。您能否也发布一小部分数据样本。
  • @AMR - 任何数字都可以。出于所有意图和目的,Excel 将零视为 False,任何不为假的都是 True。将=AND(A1) 放在B1 中,看看如何获​​得一个False。
  • @andrewd12。如果您认为我提供的答案对您有所帮助,考虑到所花费的时间,如果您能将我的答案标记为已接受,我将不胜感激。谢谢。
  • 这是我能想到的最好的。 Excel Worksheet Formula in a Logical Progression。请注意,我已将工作表重命名为 aos 以减少混淆。

标签: python excel excel-formula


【解决方案1】:

这应该很有趣....所以你有一个名为 Sales on Amazon 的数据表,它正在引用。这就是您的数据所在的位置。

  1. 如果K 列中的值等于字符串“标准”,那么2 到7 是您的if 语句的True 条件,8 到 17 是您的False 条件。

所有这些都需要True 才能为AND 返回True

  1. 如果G 列中的值为True,则为0.875,否则为0.75,并且如果大于或等于E 列中的值
  2. B, C, D的列范围的max,大于等于15

  3. B, C, D列范围的min,小于等于0.75

  4. B, C, D的列范围的median,小于等于12

这是AND的评价

  1. 那么如果2、3、4、5分别是TrueSML STND

  2. 否则LRG STND


这将结束启动公式的第一个 if 语句的 True 条件。


这开始了启动公式的第一个 if 语句的 False 条件。


只有其中之一需要为TrueIf 语句的条件为True

  1. 如果J列中的值大于165

  2. 或者如果E列中的值大于150

  3. 或者B, C, D列范围的max,大于108

  4. 如果有任何8, 9, or 10 评估为True 然后SPL OVER

  5. 如果都是False,那么如果J列的值大于130则LRG OVER

ELSE 13 到 16 是 12 的 True 条件,即 8、9 和 10 的 False 条件。

整个 Or 语句只需返回 true 即可为 True,而 17 为 False 条件。

  1. 如果E列中的值大于70

  2. 或者B, C, D的列范围的max,大于60

  3. 或者B, C, D的列范围的median,大于30

  4. 如果有任何13, 14, or 15 评估为True 然后MED OVER

  5. 否则SML OVER

你有它。

要进行测试,只需查看数据并完成这些步骤,看看您得到的答案是否与 Excel 中的值相同。


我说列的原因是我看到公式有$B2$D2 等。所以我假设这个公式被复制到一个列中以获取一系列数据。然而,它只尊重同一行中这些列的值。

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多