【问题标题】:Create a sortable table from other tables in Excel从 Excel 中的其他表创建可排序表
【发布时间】:2020-01-25 05:01:18
【问题描述】:

我有一个包含三个不同工作表的 Excel 文档。第一张和第二张表分别包含一个格式相同的表格,每个表格都有不同的信息。我们称它们为购物清单。

表 1:妈妈想买的东西 包含一个包含项目、数量、最佳购买地点等的表格。

表 2:爸爸想买的东西 包含一个包含项目、数量、最佳购买地点等的表格。

我希望第三张表——“我们需要购买的所有东西”——包含一个从其他两个表汇总的表格,其中包含两个列表中的所有项目(我们不需要担心重复)。我希望这第三个表是可排序的,但至少我不希望它有多行空格。

我怎样才能做到这一点?

【问题讨论】:

    标签: excel


    【解决方案1】:

    简短回答:这取决于您打算如何使用第三张纸。但这里有一个帮助您入门的解决方案,假设您在Sheet 1 中至少有一列保证包含每一行的值。在我的示例中,我们假设该列是 Sheet1!$B:$B

    我们的公式将输入Sheet3!A2,在列标题的正下方,然后从右往下填充。

    首先,您需要获取Sheet1 的内容。这很简单:=Sheet1!A2。相对引用将复制整个表。

    在某一时刻,您需要切换到Sheet2。你(或者更确切地说,公式)怎么知道什么时候?我们可以像这样计算Sheet1 中的行数:=COUNTA(Sheet1:$B:$B)--注意我们使用的列保证每行都有值。这是计算该列中的非空白单元格。

    使用该行数,我们可以将当前 (Sheet3) 行与 Sheet1 行数进行比较,以确定是否该切换。可以通过=ROW()获取当前行(头行记得减1)。

    如果我们把它们放在一起,我们就会得到我们的切换检查:

    =IF((ROW()-1)<COUNTA(Sheet1!$B:$B),Sheet1!A2,[switch-over formula])

    我们如何告诉它去哪个单元格,因为我们不能使用与Sheet1 相同的方法?我们通过减去 Sheet1 行数,然后加 1(同样,对于标题)来抵消相同类型的相对引用(即 Sheet2!A2)。

    =IF((ROW()-1)<COUNTA(Sheet1!$B:$B),Sheet1!A2,OFFSET(Sheet2!A2,-COUNTA(Sheet1!$B:$B)+1,0))

    这将添加没有任何空格的表格。

    挑战:

    0s

    如果您填写的公式超过了两个表格的长度——并且您可能想要这样做,所以如果您添加行,您不必更新Sheet3——您将在单元格中得到 0。为防止出现这种情况,您可以检查公式中 Sheet2 中的项目数,如果当前行大于两个工作表中项目的总和,则添加一个空字符串。

    =IF((ROW()-1)<COUNTA(Sheet1!$B:$B),Sheet1!A2,IF((ROW()+1)>(COUNTA(Sheet1!$B:$B)+COUNTA(Sheet2!$B:$B)),"",OFFSET(Sheet2!A2,-COUNTA(Sheet1!$B:$B)+1,0)))

    性能

    如果您的项目总数少于 10,000 个,您可能无需担心性能问题。但是,如果这个列表变得非常大,那么对纸张数量的持续检查将使纸张陷入困境。要解决此问题,请制作另一张表,在其中使用两个单元格计算 Sheet1Sheet2 的计数,然后在 Sheet3 中引用您的公式中的那些。当 Excel 更新依赖关系树时,它们将只计算一次。

    排序

    使用SMALL 函数在Sheet3 中排序在技术上是可行的,但它可能不值得。如果您真的希望它排序,请使用来自Sheet3 的列的数据透视表。唯一需要注意的是:每次更改数据时,您都需要刷新数据透视表,或者设置一个宏来为您完成。

    【讨论】:

    • 我已将其作为数组公式输入,但它使用 Sheet1!A2 中的值(所有列中的每个单元格)将表格填充到 Sheet1 表格的长度,然后它说“#REF!”对于 Sheet2 上的表格的长度。我不担心你答案的“0s”部分——我的工作表实际上不是用于杂货清单的,而且上面的元素数量不能改变,所以这不是问题——所以我正在使用“挑战:”标题正上方的公式。
    • 这不是数组公式,因此您不必担心。但是,如果上述挑战有效但“0”部分中的挑战无效,我建议使用公式->评估公式来查看错误的确切来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    相关资源
    最近更新 更多