我不知道使用单个单元格公式是否可以实现这一点。需要 Excel 2010 兼容(及更高版本)的公式。目的是使用如下公式
{=SUM(INDEX(built_Array;N(IF(1;ROW(INDIRECT(x1 &":"& x2)))))}
Run Code Online (Sandbox Code Playgroud)
其中 x1 和 x2 是对包含与构建数组兼容的起始索引和结束索引的单元格的引用。
Excel 公式的“构建数组”部分应根据其他地方的两个表中的数据构建:表上的标识符用于选择实际内容(使用查找 Excel 函数)。一张表包含重复值的数量,另一张表包含实际值。
例如:
| P1 | P2 | P3 | P1 | P2 | P3 | ||
|---|---|---|---|---|---|---|---|
| i01 | 2 | 4 | i01 | 20.0 | 20.6 | ||
| i02 | 3 | i02 | 10.0 | ||||
| i03 | 2 | 7 | 9 | i03 | 30.0 | 30.4 | 30.2 |
| i04 | 4 | 2 | i04 | 15.0 | 15.1 | ||
| i05 | 5 | i05 | 10.0 |
因此 i03 的构建数组将是
{30.0;30.0;30.4;30.4;30.4;30.4;30.4;30.4;30.4;30.2;30.2;30.2;30.2;30.2;30.2;30.2;30.2;30.2}
Run Code Online (Sandbox Code Playgroud)
对于 i04 来说是
{15.0;15.0;15.0;15.0;15.1;15.1}
Run Code Online (Sandbox Code Playgroud)
那么,对于 i04 取第 3 到第 5 个值,上面的数组 (ctrl-shift-enter) 公式的结果将是 45.1,而对于 i04 取第 2 到第 3 个值,结果将是 30。
我发现困难的是从公式内的表构建数组,特别是因为每个标识符可能具有不同数量的组件。
我有预感,这应该是可行的,在其他编程语言中,会使用迭代或递归,但我想探索这种方式,而不是恢复到 VBA(如果存在概念上的原因,这在 Excel …
我在两张纸上有两张桌子 - 比如说 tblFruits1 和 tblFruits2。两者都有一个“名称”列。例如,苹果公司就出现在这两个列表中。列表可能有不同的行数
Sheet1 上的 tblFruits1
| 姓名 | 颜色 |
|---|---|
| 苹果 | 红色的 |
| 桃 | 黄色的 |
| 凤梨 | 黄色的 |
Sheet2 上的 tblFruits2
| 姓名 | 颜色 |
|---|---|
| 苹果 | 红色的 |
| 樱桃 | 红色的 |
| 香蕉 | 黄色的 |
| 甜瓜 | 绿色的 |
现在我想在第三张纸上获得两个表名称的唯一列表。
Sheet3 上的预期结果
| 姓名 |
|---|
| 苹果 |
| 桃 |
| 凤梨 |
| 樱桃 |
| 香蕉 |
| 甜瓜 |
=UNION((tblFruits1[Name],tblFruits2[Name]))返回错误。
我尝试了SEQUENCE和 的变体INDEX,但没有成功。
所以问题是:
如何从两个不同工作表上的两个列范围“构造” UNIQUE 的矩阵参数?
(我正在寻找的是非 VBA解决方案 - 我知道如何在 VBA 中处理这个问题。)