2

我有一个包含 10 列的工作表,数据范围从 A1:J55 开始。Col A 有发票编号,其余列有其他人口统计数据。目标是在单元格上键入发票编号并显示与列 A 中的发票编号匹配的所有行。

除了自动过滤功能,我唯一想到的就是VBA。请建议获取数据的最佳方法是什么。提前感谢您的帮助。

4

2 回答 2

1

好吧,我为这个感到骄傲。再次避免 VBA,这个使用易失性公式 OFFSET 继续将其 VLOOKUP 搜索向下移动到表中,直到找到所有匹配项。只要确保您粘贴了足够多的公式行,如果有很多匹配项,它们就有足够的空间出现。如果您在比赛区域周围设置边框,那么您是否曾经用完空间并需要再次复制公式,这将是很清楚的。

同样,在主要部分,它只是一个公式(使用索引):

=IFERROR(INDEX($A$1:$J$200,$M3,MATCH(N$2,$A$1:$J$1,0)),"")

这变得如此简单,因为查找的艰苦工作是由一个初始列完成的,该列查找与发票编号匹配的下一行。它有以下公式:

=IFERROR(MATCH($L$2,OFFSET($A$1:$A$200,M2,0),0)+M2," ")

这是与这些公式一起使用的工作示例:

在此处输入图像描述

如果您需要进一步描述它的工作原理,请告诉我,但它主要使用与上述相同的规则,因此它在复制和移动时非常健壮。

我已经上传了 Excel 文件,因此您可以使用它,但是重现此功能所需的一切都应该在此解决方案中。

Google Docs - 点击链接并点击Ctrl+S下载并在 Excel 中打开。

于 2013-02-13T04:05:56.527 回答
0

这个问题的一个流行的解决方案是一个简单的 VLookup。在表 A1:J55 上查找用户键入的发票,然后返回相邻列的数据。

这是它的工作示例:

在此处输入图像描述

突出显示的单元格中的公式是:

=VLOOKUP($L3,$A:$J,MATCH(N$2,$1:$1,0),FALSE)

这个公式的好处是你只需要输入一次,然后你可以复制它,它会自动选择表格的正确列(这是匹配部分)。剩下的很简单:

  • 第一部分说查找值$L3(输入的发票编号),
  • 第二部分说在范围内查找$A:$J(这是您的桌子所在的位置)。我已经展示了如何选择整个列$A:$J,以便您可以添加和删除数据,而无需担心调整查找范围。(Excel 负责优化公式,以便不检查未使用的单元格)
  • 第三部分选择找到匹配行后将从中提取结果数据的列。
  • FALSE部分表示发票编号必须完全匹配(不允许近似匹配)
  • 这些$符号确保固定范围(如源表的位置 ( $A:$J) 和查找值 ($L3))不会在您将公式复制到多个列时自动更改。

如果你想在你的桌子和你进行查找的区域周围移动,这个公式很容易适应。这是一个例子:

在此处输入图像描述

奖金

如果您想添加一些小细节,您可以在 Invoice # 字段中添加一个下拉列表,以便用户获得自动完成功能以及浏览现有值的选项,如下所示:

在此处输入图像描述

于 2013-02-13T03:17:16.323 回答