我有几个以矩阵形式组织的 minitables(标题、内容),如下例所示:
我想做一个查找,以便将“标题”值放在一个单元格中,然后返回内容。所以,我在黄色单元格中放了一封信并返回内容,如下所示:
它本质上是一个 vlookup 和 hlookup 一起,或者在矩阵而不是向量中搜索。问题是我找不到对非数字数据执行此操作的方法。许多公式需要对数据进行排序,但在我的情况下它没有意义。数据本身有一个逻辑顺序(当然不是在显示的模因示例中)。
任何想法我怎样才能做到这一点?自然,将行堆叠在一起(A、B、C、D、E、F、G、H、I)然后进行 vlookup 可以解决问题,但数据必须采用这种格式。
PD:需要适用于 Excel 和 Libreoffice 的解决方案。
我建议一种基于 INDEX 函数并使用两个辅助单元格的可能方法。唯一的假设是两个表格之间有一个空白行,如您的屏幕截图所示,一个在另一个下方。
表格的长度不必总是相同的。如果需要,它可以变化。
请参阅下面的屏幕截图。参考其中显示的数据。
辅助细胞 I4
您需要在旧版本的 Excel 中通过在公式栏中按CTRL+ SHIFT+将其设为数组公式。ENTER否则,该公式可能无法正常工作。
在 Helper 单元格 J4 中,数组公式是相同的
将搜索字符串放入 G3。
G4中的公式是
将其向下拖动到整个范围的长度。
看看它使用这个动画 gif 的工作方式。
如果所有表格的大小相同,那么没有辅助单元格的更简单的解决方案如下。
在 G4
按CTRL+ SHIFT+使其成为数组公式ENTER。该公式将自动括在花括号中。
编辑 1
我对 LibreOffice 没有太多经验,但看起来数组公式在 Excel 和 Calc 之间的工作方式可能不完全相同?
请参阅下面使用 2 个辅助单元的解决方案。最后,它可以在 Excel 和 Calc 中使用。既然您的桌子具有固定和相同的长度,我就保持简单。
辅助单元格 I4 数组公式(CTRL + SHIFT + ENTER)
辅助单元格 J4 数组公式
在 G4 中放简单的 INDEX 公式
将其向下拖动到表格的长度。
这个解决方案 xlsx 文件在我的最后同时在 Excel 和 Calc 7.4 中工作。请检查这是否适合您。
假设您可以访问 O365 Excel,您实际上可以按照您的建议堆叠行,但是在动态数组中,而不是在帮助列中。如果您想使用 OFFSET 函数,那将不起作用,因为 OFFSET 需要实际的单元格范围,并且不适用于动态数组。您必须使用 INDEX。
这种方法不需要辅助单元或辅助列,一切都使用动态数组在内存中完成。
假设您的表格从 A1 开始,并且总是有 9 个表格,每个表格有 5 个元素。
(另外,我经常使用 LET,并带有 alt-enter 换行符,以帮助澄清我的公式。在这种情况下,LET 还消除了将数组堆叠两次的麻烦。)
我们还假设搜索项“E”在 B25 中,这个公式在 B26 中:
如果您不想使用 LET,它是:
=INDEX(TOCOL(A1:C20,1,TRUE),SEQUENCE(5,1,MATCH(B25,TOCOL(A1:C20,1,TRUE),0)+1,1))
在任何一种情况下,请注意,这对于您的示例是“有点”硬编码的,并且还假设表中的任何值都不完全是“A”到“I”,否则你会遇到问题。
使用命名范围和
INDIRECT()
函数。将所有迷你表设置为命名范围,然后在搜索框下的公式下为=INDIRECT(E2)
(在我的示例中,E2 是搜索框的位置,如果您的 excel 版本没有溢出内容,它可能不起作用):进一步细化,将搜索框转换为使用带有下拉框的数据验证,因此它只提取有效的标题。
间接和匹配
假设:
目标:
动态生成单元格坐标以在 INDIRECT 函数中使用以检索该单元格中的数据。
示例:
使用 "value" (G3) = "H" ,我想从 C18:C22 中检索值并将它们显示在 G4:G8 中。
命名范围:
G4:G8 中的公式
我的间接公式使用 R1C1:
笔记
单元格 G4 中的示例求解
为了使公式更小更易于遵循,我有预先求解的值,我将在下面插入公式。
所以
变成
然后
和
或者
最后
通过扩展,上图示例中的 G4:G8 将解析为: