我想在单元格中显示表格名称。这就是我想到的方法,因为我需要一个不使用数组或宏的解决方案。
有没有办法将这些公式压缩到单个单元格中?我想让它只有一个单元格,我可以将其粘贴到任何我喜欢的地方,它会动态显示此表的名称。
为了便于说明,M 列只是右侧列的 FORMULATEXT。
其背后的想法是,如果我将表格(包括其左侧的单元格)剪切并粘贴到电子表格中的其他位置,它仍将正常工作并显示表格的名称。单元格 N24 中的结构化引用确保它仍将正常工作,即使我在表格和当前列 N 之间插入其他内容。
- 单元格 n25 返回表中任意列的标题名称。优点是,当表名或列名更改时,这将自动更新,而不依赖于表位于特定位置。
- 单元格 n24 抓取 n25 中公式文本的一部分。具体来说,它从第二个字符(即公式中的 = 之后)开始搜索,直到找到 [[,它标记表格名称的结尾和列名称的开头(我们只需要表格名称)。这在我的 Excel 2016 上有效,但不幸的是,在早期版本的 Excel 上无效,这很麻烦
- 单元格 n23 查找并删除 n24 中返回的内容的方括号。
- 单元格 n22 删除下划线并用空格代替。这不是必需的,但看起来更整洁。
这种方法的问题是,上面的三个单元格必须放在当前 n25 上方才能正常工作。它们占用空间并且看起来很乱。我通过将单元格的文本颜色设置为白色(顶部单元格除外)来解决这个问题。
有没有更好的方法可以做到这一点,同时不使用宏或数组,如果解决方案可以在 Excel 2010 中使用,则可以获得加分?或者这个问题只是他们用来标记我陷入疯狂的展览品?
答案1
如果没有宏或 vba UDF,可能就没有单个单元格解决方案。这是压缩为两个单元格的 OP 解决方案。也许单元格 N25 可以使用;;;""
自定义格式,将单元格文本格式化为空白(或使用字体颜色与背景颜色相同的技巧)。
N25=Scans_per_day_by_site[[#Headers],[Location]]
公式=PROPER(SUBSTITUTE(MID(FORMULATEXT(N25),2,FIND("[",FORMULATEXT(N25))-2),"_"," "))
除了使用 添加标题大写之外,这个答案和 OP 之间的唯一区别就是要返回的字符PROPER
的计算。MID
- 首先,
FIND
返回在第二个参数中首次找到文本的位置:(N25
非MID(2,N25,...
)。 - 使用
MID
,返回从 开头开始的这个数量的字符N25
将包括找到的字符。 - 要排除找到的字符,请从字符数中减去 1。
- 由于 的开始
MID
是2
,因此从开头删除一个字符,将返回的字符向右移动一个。 - 再次,这比需要的多了一个字符。
- 再减 1,总计为
- 2
。