找到的第一个错误单元的返回地址(在A1和X500之间)

时间:2015-09-28 09:24:26

标签: excel vba excel-vba

如果你有办法,给我一点细分,这样我就可以学习它,而不仅仅是复制它。 -Thx

=ADDRESS(MATCH("keyword",B:B,0),3,1,1)

这个方便的东西让我知道我在一个专栏中寻找的东西,我可以调整它以适用于1列,但似乎在多列和行中搜索错误高于我的工资等级。

............
对于那些对如何感兴趣的人:

您可以通过链接到您搜索到的地址来进一步帮助您自己...(如果您的文档不要求您留下错误,那么它非常方便地跳转到感兴趣的地方,因此您无法获得以这种方式下一个)

(示例搜索)

简易版

=HYPERLINK(CONCATENATE("#",a1),"Title of Link")

它会将您发送到单击时在A1中找到的任何地址(如果您想进入保持链接的单元格,只需按住左键单击更长时间。)

=HYPERLINK(CONCATENATE("#",CELL("Address",INDEX($B:$B,MATCH
("keyword your search for",$B:$B,0)+0))),"Title of Link")

击穿: 超链接,#=内部链接 - 指向此文件或工作表(无论是什么),使用地址,通过索引匹配条件找到,名称 - 单元格中显示的文本。

2 个答案:

答案 0 :(得分:1)

我不建议使用AGGREGATE¹ function的完整列引用,但是将列引用减少到更合理的实际数据区表示效果很好。

'first error
=ADDRESS(AGGREGATE(15, 6, ROW(1:9999)/ISERROR(B1:B9999), 1), COLUMN(B:B), 1, 1)
'second error
=ADDRESS(AGGREGATE(15, 6, ROW(1:9999)/ISERROR(B1:B9999), 2), COLUMN(B:B), 1, 1)
'last error
=ADDRESS(AGGREGATE(14, 6, ROW(1:9999)/ISERROR(B1:B9999), 1), COLUMN(B:B), 1, 1)

'first error in column B:D from B1, B2, ... D9998, D9999
=IFERROR(ADDRESS(AGGREGATE(15, 6, ROW(1:9999)/ISERROR(B1:B9999), 1), COLUMN(B:B), 1, 1),
  IFERROR(ADDRESS(AGGREGATE(15, 6, ROW(1:9999)/ISERROR(C1:C9999), 1), COLUMN(C:C), 1, 1),
  IFERROR(ADDRESS(AGGREGATE(15, 6, ROW(1:9999)/ISERROR(D1:D9999), 1), COLUMN(D:D), 1, 1), "no errors")))

在最后一个示例中,如果没有找到错误,IFERROR function用于将控制权传递给引用另一列的下一个子公式。

Address of first and last error

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。

答案 1 :(得分:0)

www.excelforum.com的托尼·瓦尔科(Tony Valko)已经用一个主笔击中了这个 - 这是其他任何想要使用它的人:

=IFERROR(ADDRESS(MOD(SMALL(IF(ISERROR($A$1:$D$5),COLUMN($A$1:$D$5)*10000+ROW($A$1:$D$5)),ROWS(F$1:F1)),10000),TRUNC(SMALL(IF(ISERROR($A$1:$D$5),COLUMN($A$1:$D$5)*10000+ROW($A$1:$D$5)),ROWS(F$1:F1))/10000),4),"")

**需要使用键输入数组公式 CTRL,SHIFT,ENTER(不仅仅是ENTER)的组合。 按住CTRL键和SHIFT键。

此外,你可以用#34;")代替#34;")当你没有错误时,不要从视图中丢失公式。