Excel Sumifs -多列条件

1aaf6o9v  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(109)

我试图SUMIF多列基于多列条件.我需要得到一个总和的所有年份“2021,2022,2023”的基础上,如果“位置=相同的位置”,“类型=类型1”,和“价格>= 70000”.并把这个总数到一列.这应该合计所有符合所有条件的年份.
我已经尝试了几个公式,但到目前为止,甚至没有接近。我求助于这里的Maven。
Excel表格:
| 一|B| C| D| E| F| G|
| --|--|--|--|--|--|--|
|国家|位置|类型|价格|2021年|2022年|2023年|
| 亚拉巴马|位置1| 1型|60000-65000| 1 | 5 | 7 |
| 亚拉巴马|位置1| 1型|70000-95000| 3 | 2 | 8 |
| 亚拉巴马|位置1| 2型|70000-105000| 3 | 1 | 2 |
| 亚拉巴马|位置1| 2型|90000-125000| 6 | 5 | 1 |
| 阿拉斯加|位置2| 1型|60000-65000| 4 | 3 | 6 |
| 阿拉斯加|位置2| 1型|70000-85000| 6 | 7 | 10 |
| 阿拉斯加|位置2| 2型|70000-105000| 4 | 3 | 6 |
| 阿拉斯加|位置2| 2型|80000-115000| 4 | 3 | 6 |
| 阿拉斯加|位置2| 2型|90000-125000| 4 | 3 | 6 |
| 加州|位置3| 1型|60000-65000| 5 | 2 | 3 |
| 加州|位置3| 2型|70000-105000| 4 | 3 | 6 |
| 加州|位置3| 2型|80000-125000| 2 | 1 | 5 |
| 内华达州|位置4| 1型|60000-65000| 5 | 2 | 3 |
| 内华达州|位置4| 1型|70000-105000| 7 | 3 | 8 |
| 内华达州|位置4| 2型|70000-105000| 2 | 2 | 5 |
| 内华达州|位置4| 2型|80000-125000| 3 | 9 | 1 |
还有什么我需要补充的吗?
谢谢

iyzzxitl

iyzzxitl1#

使用你的数据,我不得不做一些调整。因为不可能在一个SUMIF中汇总三列(就像Scott Craner刚才说的那样),我们必须逐列进行。
现在,如果我们使用公式=SUMIFS(E2:E17, $C$2:$C$17,"Type 1", D2:D17, ">=60000"),我们将以0结束,因为列D中的数据被格式化为范围。建议将一列用于低范围,另一列用于高范围,然后您可以从那里过滤。
有点像=SUMIFS(F2:F17, $C$2:$C$17,"Type 1"),这是一个基本的SUMIF,它会根据你的数据产生24个结果。
因此,建议将您的值分解为基于列的单独较小的集合,然后从每一列执行SUMIF,之后您可以将这些组合为合并SUM以进行最终计数。

6psbrbz9

6psbrbz92#

我不确定你想要什么样的输出,因为你没有显示任何东西,也不清楚你的变化程度可能是什么,但是如果你有Microsoft 365,下面的单一公式将根据你的规范过滤你的数据,然后输出这些年的总数。
从我命名为Sale的初始表开始:


的数据
根据你的标准:



在某些单元格中使用此公式:

  • 请注意,在下面的公式中,Min表示数字70000Type表示字符串Type 1。这些可以存储在命名范围中,也可以直接在公式中替换以获得结果。将它们存储在命名范围中可以灵活地更改过滤器 *
=LET(
    l, UNIQUE(Sale[Location]),
    low, --BYROW(
        Sale[Price],
        LAMBDA(arr, INDEX(TEXTSPLIT(arr, "-"), 1))
    ),
    high, --BYROW(
        Sale[Price],
        LAMBDA(arr, INDEX(TEXTSPLIT(arr, "-"), 2))
    ),
    tf, (low >= Min) + (Min <= high),
    f, FILTER(Sale, tf * (Sale[Type] = Type)),
    tot, BYROW(CHOOSECOLS(f, -1, -2, -3), LAMBDA(arr, SUM(arr))),
    data, HSTACK(DROP(f, , -3), tot),
    gt, MAKEARRAY(
        1,
        5,
        LAMBDA(r, c,
            CHOOSE(
                c,
                "Grand Total",
                "",
                "",
                "",
                SUM(CHOOSECOLS(data, -1))
            )
        )
    ),
    VSTACK(HSTACK(DROP(Sale[#Headers], , -3), "Totals"), data, gt)
)

字符串
will =>以下结果:


vxqlmq5t

vxqlmq5t3#

似乎期望的结果至少可以以几种方式呈现。

*简单方法

  • 步骤1:将Price列(字符)转换为(数字)。给定条件(Price >=70000),取每个范围的下限
  • 步骤2:使用If()来详细说明所有条件,而不是为Location设置任何条件,因为所有条件都是所需的。
  • 第三步:总数基于所有条件。
  • 第四步:要知道每个位置,使用过滤器或数据透视表

[Excel格式] https://i.stack.imgur.com/eXmMg.png

*辛苦

  • Step1:和以前一样
  • 第二步:添加列(基于位置)。然后与之前相同

[Excel格式] https://i.stack.imgur.com/BEeIt.png

公式:

    • 酒店:
      *Price_interim:=LEFT(D2,5),其中D2是原始价格
      Price_final:=H21,其中H2为Price_interm
      *总计:=IF(B2=“位置1”,IF(C2=“类型1”,IF(OR(I2>70000,I2=70000),SUM(E2:G2),“NA”))
      *辛苦
      *总位置(1):=IF(B2=“位置1”,IF(C2=“类型1”,IF(OR(I2>70000,I2=70000),SUM(E2:G2),”“)
      *总位置(2):=IF(B2=“位置2”,IF(C2=“类型1”,IF(OR(I2>70000,I2=70000),SUM(E2:G2),”“)

相关问题