【发布时间】:2016-09-09 17:24:41
【问题描述】:
我的问题:
我有一个包含要搜索的 ID 和名称的电子表格。
我以为我可以使用过滤器选项,但 id 或名称在合并单元格中,因此过滤器选项仅返回有关 id 或名称的第一行数据。
我的电子表格:
|Header 1| header 2| header 3| header 4|
|--------------------------------------|
| | | data1 | data1 |
|id1 | name1 | data2 | data2 |
| | | data3 | data3 |
|--------------------------------------|
| | | data1 | data1 |
|id2 | name2 | data2 | data2 |
| | | data3 | data3 |
|--------------------------------------|
我调查的内容:
How to sort/filter merged cells in Excel?
在这里我了解到我可以通过取消合并单元格并赋予它们相同的值来获取所有数据。但是有几个问题:
这需要万无一失。用户很容易错误地给他们不同的名字或ID
名称通常很长,因此合并单元格可以让我完全显示它们,而 B 列不会太宽
我已经编写了代码来写入和读取这些数据,我需要查看我是如何浏览电子表格的
How do I avoid merging cells vertically in excel?
这篇文章建议用单元格顶部的文本框替换合并的单元格,如果我有一个公式可以自动为文本框下的每个单元格指定文本框中的值,这可能会起作用。但同样,不是超级万无一失或干净。
解决方案?
我实际上并不想过滤数据。我希望用户使用搜索框找到工作表的正确部分。
我在想一个宏可以这样工作:
监听用户在特定工作表、特定标题上应用过滤器
将标题下第一个可见单元格的地址存储在变量MyCell中
移除过滤器
选择我的细胞
这可能吗?
替代解决方案?
监听用户在特定工作表、特定标题上应用过滤器
使每个过滤行下的 2 行可见
也可以,但没必要。
【问题讨论】:
-
如果他们只需要到达工作表上的正确位置,您可以让用户在单元格或用户表单中输入名称,然后执行
Range.Find将他们带到该位置.如果这不是一个可用的解决方案,还有其他几种方法。 -
@Kyle 这可以工作。但是,如果可能,我想使用过滤器选项的搜索框。用户可能不知道正确的名称或 ID,因此很高兴有建议。我想我可以创建一个可用名称和 ID 的数组,但如果可能的话,我想省去自己的麻烦。
-
我会创建一个包含所有可能条目的列表框,或者一个链接到所有可能条目的组合框,并让用户通过它。我建议不要尝试为自己节省几行代码,以获得效率较低且更容易出错的解决方法。
-
@Kyle 我会调查的。但我会留下这个问题。看看是否有人知道如何按照我的建议去做会很有趣。
-
当然可以读取用户过滤器数据,剥离过滤器并获取信息。我只是看不到这种方法的好处。坦率地说,我只会取出合并的单元格。当您计划使用数据而不是仅仅查看数据时,它们只会引起头痛。请参阅here,了解如何开始读取过滤器数据。