Excel总结一列基于另一列

时间:2016-03-09 18:27:09

标签: excel-formula

我的数据分为以下几列:

Runs    RunsAfter   Switch     New
 0          2          1
 0          2          0
 1          2          0
 0          1          0
 1          1          0
 0          0          0
 0          0          0
 0          0          1
 0          1          0 
 1          1          0
 0          0          0

我希望excel通过获取每个单元格并对列的其余部分求和直到“转换”列中的1为1来对“运行”列求和。然后它应该再次开始计算,直到另一个Switch。所有这些输出都应该放在New列中。结果应该看起来像RunsAfter列,我目前正在手工计算。我会继续这样做,但数据集会变得太大而无法继续这样做。

我已经检查了类似的问题,但是找不到我正在寻找的东西。如果我在其他地方错过了答案,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为你想使用匹配公式的组合来找到下一个“开关”和间接公式来定义要求和的范围。我想不出一个简单的方法来做到这一点。

这假设你的标题在第1行,你的列是Runs(A),RunsAfter(B),Switch(C),结果是D.我在你的最后一行使用了100,但你会如果你有更多的行,需要改变它。这就是我在D2中所做的:

要查找Switch为1的下一行:     MATCH(1,C3:$ C $ 100,0)+ ROW()

我还包括iferror,以便在最后一次切换后不使行中断:     IFERROR(MATCH(1,C3:$ C $ 100,0)+ ROW() - 1100)

我将此作为间接公式的一部分,以告诉它总结的范围:

<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>2.0</version>
    <executions>
        <execution>
            <id>set-custom-arg-line</id>
            <phase>validate</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                    def argLine = project.properties['argLine'];
                    if (argLine == null) {
                        argLine = "";
                    }
                    project.properties.argLine = argLine;
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <argLine>-Xmx1024m ${argLine}</argLine>
    </configuration>
</plugin>

因此对于D2,它是从A2到下一个开关之前的行的总和,在本例中是第8行。您应该能够使用这些锚点从D2向下拖动它。