使用SUMIF函数,范围和[sum_range]随每个单元格而变化

时间:2016-12-02 00:29:57

标签: excel sumifs

我已经找到了这个答案但是没有找到任何有用的答案,所以如果这是一个重复的问题我会道歉。

我使用的是Excel 2010,并且在一个工作簿中有两张表。第一张表格保存了有关个别会员的大部分信息,是我使用公式的地方。第二张表保存有关每个成员的数据。用法。每行代表一个人。我正在尝试收集第二张表中列出的一个人的所有实例,并将其放在第一张单元格中。

我使用了sumif函数,它完全适用于我使用它的第一个人。之后,拖动框会更改公式的范围和sum_range以及条件。我希望标准更改为下一行中的单元格,但我需要范围和sum_range保持相同的每个单元格。如果我从第一个单元格复制公式并将其粘贴到第二行,则没有任何变化。

关于如何使sumif公式在整个列上工作而不改变范围和sum_range的任何想法?或者有更简单的方法吗?请记住,第二张表将随着时间的推移而扩展,以包含越来越多的实例,这些实例将需要包含在未来的计算中。

1 个答案:

答案 0 :(得分:0)

让我们说你的范围是double ncVal; double waVal; double ncOffset; double waOffset; for (int i = 0; i <= dt.Rows.Count - 1; i++) { ncOffset = 0; waOffset = 0; ncVal = double.Parse(dt.Rows[i]["NC"].ToString()); waVal = double.Parse(dt.Rows[i]["WA"].ToString()); // If values are within 10 points of each other, offset by 5 each positive/negative. if ((ncVal - waVal) < 0.10) { if ((ncVal - waVal) > 0) { if (ncVal < 1) { ncOffset = 0.03; waOffset = -0.03; } else { ncOffset = -0.03; waOffset = 0.03; } } } else { if ((waVal - ncVal) < 0.10) { if ((waVal - ncVal) > 0) { if (ncVal < 1) { waOffset = 0.03; ncOffset = -0.03; } else { waOffset = -0.03; ncOffset = 0.03; } } } } // Data values. str.Append("data.setValue(" + i + "," + 0 + "," + "'" + dt.Rows[i]["WeekNum"].ToString() + "');"); str.Append("data.setValue(" + i + "," + 1 + "," + "'" + dt.Rows[i]["NC"].ToString() + "');"); str.Append("data.setValue(" + i + "," + 2 + "," + "'" + dt.Rows[i]["WA"].ToString() + "');"); str.Append("data.setValue(" + i + "," + 3 + "," + "'" + dt.Rows[i]["Std Cap"].ToString() + "');"); // Invisible line to set annotations off of. str.Append("data.setValue(" + i + "," + 4 + "," + "'" + (ncVal + ncOffset) + "');"); // Annotation value; Multiply value by 100 to get percentage. str.Append("data.setValue(" + i + "," + 5 + "," + "'" + String.Format("{0}%", (100 * ncVal)) + "');"); // Invisible line to set annotations off of. str.Append("data.setValue(" + i + "," + 6 + "," + "'" + (waVal + waOffset) + "');"); // Annotation value; Multiply value by 100 to get percentage. str.Append("data.setValue(" + i + "," + 7 + "," + "'" + String.Format("{0}%", (100 * waVal)) + "');"); } ,所以要完全锁定它,只需将其更改为A1:A3