【问题标题】:How do I reference the last row in a named Excel table?如何引用命名 Excel 表中的最后一行?
【发布时间】:2018-02-07 21:01:24
【问题描述】:

我目前正在尝试格式化表格的一列,以便如果在另一列中有任何匹配的名称,则原始列中的单元格将突出显示。这是我的意思的一个例子:

第 10 行具有 M6A1 的先决条件。但是,第 11 行的名称为 M6A1。我想突出显示第 10 行中的 M6A1。

为此,我想我会使用 COUNTIF,范围从当前行(在本例中为 10)到底行 (14)。但是,我不想在 14 中硬编码,因为列表长度会改变。因此,我认为我可以只调用表中的最后一行,但这显然不是一个功能。我想知道如何动态引用此表中的最后一行,或者是否有更好的方法来做到这一点。

【问题讨论】:

  • 不确定这是否可行,我现在无法对其进行测试,但您可以根据 vlookup 执行条件格式设置规则。
  • 我会使用 vlookup,但表格将按 BR 而不是名称排序。

标签: excel


【解决方案1】:

如果您考虑使用内置 Excel 函数,您可以通过以下方式获取表格或命名区域的最后一行:

  • =ROW(NAMED_RANGE or TABLE_NAME)-1+ROWS(NAMED_RANGE or TABLE_NAME) - 表格的最后一行;
  • =ROW(NAMED_RANGE or TABLE_NAME)-1+COUNT(NAMED_RANGE or TABLE_NAME) - 表中的最后一条记录。

【讨论】:

  • 我最终不得不使用隐藏列来使其工作,但我得到了我想要的。感谢您的帮助。
【解决方案2】:

要获取表格的最后一行,请使用Range("A1").End(xlDown).Row,前提是您的“A”列没有任何空白单元格。如果是这样,更好的方法是使用Range("A1000000").End(xlUp).Row.End(Direction) 方法从指定的 Range 开始,在给定方向(上、下、左或右,以 xl 开头)进入空白单元格之前的最后一个单元格,.Row 方法获取行号给定的范围/单元格。

【讨论】:

    【解决方案3】:

    我会建议这个代码:

    lastRow = ws.Range(affectedTable).Row + ws.Range(affectedTable).Rows.Count - 1
    

    【讨论】:

      【解决方案4】:

      用对我有用的方法扩展先前的答案。下面是另一个不需要 VBA 但将返回最后填充的行而不是表格区域的最后一行的解决方案。

      COUNT(TABLE_NAME) 将返回表格中填充单元格的总数。如果有空白单元格,这可能无法正常工作。

      由于我们试图计算行数,因此只使用表中始终会被填充的一列(在许多情况下是第一列)更有意义。使用内置的 COUNTA 函数,我们可以只计算具有值的单元格。使用结构化引用指定表中的单个列或命名范围:

      =ROW(TABLE_NAME)-1+COUNTA(TABLE_NAME[COLUMN_NAME])
      

      【讨论】:

        【解决方案5】:

        如果你想在表格内(例如总计单元格),只需使用偏移量(当然没有空行): [code]=OFFSET(tblName[[#Totals],[ColName]],-1,0)[/code]

        如果是表外,有很多好的解决方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-21
          相关资源
          最近更新 更多