繁体   English   中英

计算列以根据三个条件对所有匹配值求和

[英]Calculated column to sum all matching values based on three criteria

给定下表:

VertFrom 垂直到 中心
一个 20.97 22.18 1.21 21.575
一个 22.18 22.57 0.39 22.375
一个 22.57 24.09 1.52 23.33
一个 24.09 25.57 1.48 24.83
25.57 27.08 1.51 26.325
27.08 28.39 1.31 27.735
28.39 29.51 1.12 28.95

我需要创建一个计算列,如下所示:

  1. 给定 var vINT = X
  2. 其中 VertFrom >= Center -vINT/2 AND VertTo <= Center + vINT/2
  3. 为当前孔添加所有 Len 值

示例结果(vINT = 2):

VertFrom 垂直到 中心 vINT = 2
一个 20.97 22.18 1.21 21.575 1.6
一个 22.18 22.57 0.39 22.375 0.39
一个 22.57 24.09 1.52 23.33 1.52
一个 24.09 25.57 1.48 24.83 1.48
25.57 27.08 1.51 26.325 1.51
27.08 28.39 1.31 27.735 1.31
28.39 29.51 1.12 28.95 1.12

第 1 行是您应该看到过滤条件有两个匹配项的位置,结果是“1.6”=“1.21 + 0.39”

生成准确结果的 Excel 数组公式如下:

=SUM($D$2:$D$8*($A$2:$A$8=$A2) ($B$2:$B$8>=$E2-F$1/2) ($C$2:$C$8< =$E2+F$1/2))

在哪里

  • A:A = 孔
  • B:B = VertFrom
  • C:C = VertTo
  • D:D = 连
  • E:E = 中心
  • F1 = 2

我已经尝试了很多方法来完成这项工作并且我束手无策。 我最近的尝试如下:

=
var vINT = 2
var vHOLE = TEST[Hole]
var vCENTER = TEST[Center]
var vVERTTO = TEST[VertTo]
var vVERTFROM = TEST[VertFrom]
var TESTONE = FILTER(TEST,TEST[VertFrom] >= TEST[Center]-vINT/2 && TEST[VertTo]<=TEST[Center] + vINT/2)
var vTEST = SELECTCOLUMNS(TEST, "HOLE", TEST[Hole], "LENGTH", TEST[Len])

RETURN

SUMX(CALCULATETABLE(TEST,TEST[Hole]=vHOLE,TEST[VertFrom]>=vCENTER-vINT/2,TEST[VertTo]<=vVERTTO+vINT/2),[Len])

感谢所有可以提供帮助的人。

尝试使用 SELECTEDVALUE(基于您想要在此/当前行上比较的值):

xVert 2 = 
var vINT = 2
return
CALCULATE( SUM('Sheet1 (2)'[Len]), FILTER(ALL('Sheet1 (2)'), 
SELECTEDVALUE('Sheet1 (2)'[Hole]) = 'Sheet1 (2)'[Hole] &&
SELECTEDVALUE( 'Sheet1 (2)'[VertFrom]) >= ('Sheet1 (2)'[Center] -vINT/2) && 
SELECTEDVALUE('Sheet1 (2)'[VertTo]) <= ('Sheet1 (2)'[Center] + vINT/2) ))

在此处输入图像描述

根据@msta42a 的反馈,我离我更近了一步。

=
var vINT = 2
var vHOLE = TEST[Hole]
var vCENTER = TEST[Center]
var vVERTTO = TEST[VertTo]
var vVERTFROM = TEST[VertFrom]

RETURN

CALCULATE(
    SUM([Len]), 
        FILTER(
            TEST,
            vHOLE = TEST[Hole] && vVERTFROM >= TEST[Center] -vINT/2 && vVERTTO <= TEST[Center] + vINT/2)

)

SELECTEDVALUE 在 Excel 的 DAX 中不可用,但使用变量我可以将行上下文应用于 @msta42a 建议的现在改进的过滤器上下文; 但是,仍然存在一个问题。

对于除 2 以外的所有 vINT 值,结果都很好。 然而,对于 vINT = 2,它不是。

达克斯结果

  • vINT = 2
  • 第 1 行结果为 1.21
  • 第 2 行结果为 1.6

数组公式结果

  • vINT = 2
  • 第 1 行结果为 1.6
  • 第 2 行结果为 0.39

现在这是一个更糟糕的问题,因为在我看来这应该可行。

我尝试过使用和不使用 ALL(TABLE) 语句 - 没有变化 - 并且更愿意避免使用 ALL 语句,因为该表有 600,000 行。

暂无
暂无

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

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