如何在异常的Excel矩阵中查找

时间:2017-05-16 19:36:29

标签: excel vba excel-vba excel-formula

这可能会变得复杂......请耐心等待......

我有一张表,根据我在研究中发现的情况,使用查找公式和函数是一种特殊情况。显示比描述容易得多所以这里是我的数据的屏幕截图,用于了解我正在使用的内容(实际表格向下延伸60行,向右延伸超过160列)。 enter image description here

(我将A列中的值称为“结果”,第2行中的值称为“块号”,块号下面的矩阵称为“参考号”。)

我想要做的是创建一个公式,如果我插入给定的块号(例如,“BA000-”)和参考号(例如,“040”),Excel将从结果返回一个列表与之对齐(在我的示例标准的情况下,它将列出“BBB”,“CCC”,“EEE”,“FFF”和“KKK”)。

我已经研究了两天了,尝试了我能找到的每个查找功能和功能组合(包括但不限于INDEX-MATCH,INDEX-MATCH-MATCH,VLOOKUP-HLOOKUP等)。无论我使用什么功能,我都会遇到错误。我还没有尝试VBA,因为我没有时间深入研究它,但是我开始认为我将不得不屈服于那个黑暗的一面或切换到Access(我的熟练程度)远远低于Excel)。

任何帮助都将受到极大的赞赏,并获得783 Karma积分(或者您希望我向您提供的任何个人放纵系统)的效果。如果您需要任何进一步的信息,请随时告诉我。

编辑:我必须在平衡工作时间的同时进行这项工作(因为这是我一直在为我的工作进行的项目)所以可能需要一分钟,但我会尝试获取更多信息的表格来玩用。在此期间,非常感谢你们帮助我到目前为止!

编辑#2:Here is a link到我正在处理的文件示例(托管在Google云端硬盘上)。我尽量使其尽可能简洁明了,但如前所述,如果您需要任何其他信息,请告诉我。我正在使用的实际文件一直跨越到EP列,但我认为那个大文件是不必要的。

这是一个参考工具,用于查找特定组件的使用模型(物料清单)。在查找部件号(在单独的文件中)后,您将获得该部件的块编号和参考编号,当在矩阵中交叉引用时,它会告诉您使用该部件的模型。我的目标是创建一个自动搜索工具,列出当用户输入块和参考数字时所使用的零件的所有模型(作为模型的实际列表,虽然所有模型都是唯一的,但可能会很长并且过滤很繁琐)。

和以前一样,非常感谢为实现这一目标所做的任何帮助。如果需要任何其他信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

这是一个适合您的公式。在不知道您的确切范围的情况下,我选择使用您可以根据需要替换的命名范围。

使用的命名范围:

  • 结果:这是您的"结果"在A栏(AAA,BBB等)
  • BlockHeaders :这是包含块编号(BA000-,BA010-等)的标题行
  • tblData :这是包含您的参考号码(032,040等)的数据表
  • BlockNum :这是包含您要查找的特定区号的单元格(根据您的示例设置为BA000)
  • RefNum :这是包含您要查找的特定参考编号的单元格(根据您的示例设置为040)

使用这些命名范围,假设所有结果都是唯一的(如您的示例所示),此公式应该适用于您。我把这个公式放在一个单独的表格中,从单元格B4开始并向下复制:

=IFERROR(INDEX(Results,MATCH(1,INDEX((COUNTIF($B$3:$B3,Results)=0)*(INDEX(tblData,0,MATCH(BlockNum,BlockHeaders,0))=RefNum),),0)),"")

答案 1 :(得分:1)

tigeravatar对命名范围有一个好主意。如果可以,我会建议同样的。

这是输入F10的公式,并根据我的屏幕截图进行复制:

=IFERROR(INDEX($A:$A, SMALL(IF(INDEX($C$4:$E$8, 0, MATCH($B$1, $C$2:$E$2, 0))=$A$1, ROW($A$4:$A$8), 1E+99), ROWS($F$10:$F10))), "")

1)如您所见,要搜索的值在A1和B1中。

2)第二个INDEX函数中的范围$C$4:$E$8是'参考数字'的块。展开引用或使用命名范围(更好)

3)MATCH函数中的$C$2:$E$2是您的Block代码。展开或使用命名范围

4)ROW($A$4:$A$8)需要涵盖您的所有结果'。展开或使用命名范围

5)需要修改ROWS($F$10:$F10)以匹配您希望列表出现的第一个单元格。因此,如果你在AX1,你会使用ROWS($AX$1:$AX1) - 请注意美元符号略有不同。

enter image description here