我有一个命名范围 ( NamedRange1),我需要在公式中引用该范围的第一行和第一列。我想出了以下内容:
第一排:
INDIRECT("R" & ROW(UnpivotSource) & "C" & COLUMN(UnpivotSource) & ":R"& ROWS(UnpivotSource) +ROW(UnpivotSource) -1 & "C" & COLUMN(UnpivotSource),0)
第一栏:
INDIRECT("R" & ROW(UnpivotSource) & "C" & COLUMN(UnpivotSource) & ":R"& ROW(UnpivotSource) & "C" & COLUMNS(UnpivotSource) + COLUMN(UnpivotSource) -1,0)
这似乎很麻烦,特别是因为Excel对象模型公开Rows,并Columns在VBA。有没有更简洁的表达方式?
有人可以解释 Excel 2007 中 Excel 表格和命名范围之间的区别吗?似乎除了具有命名范围的功能外,它们还以某种方式标记为表格,这在功能区中为它们提供了特殊的格式设置和过滤选项。
其他问题:
谷歌没有帮助(excel difference between named range and table和excel 2007 difference between named range and table),我找到了一个描述表功能的资源,但没有提到命名范围。
编辑:似乎主要区别在于能够使用结构化引用。还可以轻松地重新调整表格的尺寸,并在不移动整个列的情况下插入新列,尽管最后两个仅来自我的观察。
我已将外部工作簿中的表复制到另一个工作簿中。当我重命名表(在设计选项卡上)时,Excel 告诉我该名称已存在。当我将 Excel 中的范围重命名为相同名称时,效果很好。
\n\n该名称不会出现在名称管理器中,并且仅当我将项目格式化为表格时才会出现这种情况。
\n\n我已将表格粘贴为纯文本并重命名,效果很好。然后我删除该名称并转换为表并重命名,它再次告诉我该名称存在。\n我对此完全困惑
\n\n根据评论 - 下面的图片(抱歉不知道它们是否可以添加到评论中):
\n\nit\xe2\x80\x99s 位置中的表名为“BandLU2”:
\n\n\n\n更名为BandLU:
我的 Excel 工作表在我定义的命名范围内包含许多 VLOOKUP。现在,当我在命名范围的中间添加一列时,在插入的列之后引用列的 VLOOKUP 现在已损坏。我明白这个问题,但最好的解决方法是什么?有没有办法从标题文本中找出列号?
[编辑] 使用 Kaze 的 INDEX 和 MATCH 想法似乎是最好的解决方案。这是我的结果:
INDEX(MyTableData, MATCH("RowLabel", RowList, 0), MATCH("ColumnLabel", ColumnList,0))
Run Code Online (Sandbox Code Playgroud)
其中 MyTableData 是整个表的命名范围,RowList 是行标题的命名范围,ColumnList 是列标题的命名范围。
是否可以通过将文本与公式组合来引用命名范围?假设我通过 INDEX 获得一个范围的名称,它返回一个文本,但我也想在文本后添加一些内容,如下所示:
范围和“之后的一切”
我有几个命名范围,因此为了动态引用这些范围,我需要在该 RANGE 文本之后添加一些内容。但是Excel给出了一个错误。
简而言之
命名范围:
范围1 范围2 范围3 等等
我想要的是用计数公式说:
=COUNTIF(RANGE & "whatever comes after",1)
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,那么 Excel 会给出一个错误,那么我想要做的甚至可能吗?
在 Excel 2010 中,我需要逐行浏览数据表并在 VBA 中操作数据。
我原来的函数是这样的:
Private Function GetValue(ByVal myRange As Excel.Range, ByVal strCol As String) As String
Dim myCell As Object
Set myCell = myRange.Cells(, strCol)
GetValue = myCell.Value
End Function
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
GetValue(myRow, "AE")
Run Code Online (Sandbox Code Playgroud)
myRow是表示一行的 Excel.Range。
"AE"是列索引。
我想转换为使用列名而不是列索引,因为用户将来可能会选择添加或删除列。我将一系列单元格标识为 Excel 中的表格,命名该表格,并选择唯一的列名。
这意味着我现在将使用以下方法调用该函数:
GetValue(myRow, "column_name")
Run Code Online (Sandbox Code Playgroud)
但我找不到可以仅指定列名而不指定行的示例。
这甚至可行吗?