Note: The other languages of the website are Google-translated. Back to English

在Excel中过滤后,如何查找和获取第一个可见单元格的值?

在某些情况下,您可能需要获取过滤列表中第一个可见单元格的值。 如何实现呢? 本文将向您展示解决问题的方法。

使用数组公式过滤后查找并获取第一个可见单元格的值
使用VBA过滤后查找并获取第一个可见单元格的值


使用数组公式过滤后查找并获取第一个可见单元格的值

您可以应用以下数组公式来获取过滤列表中第一个可见单元格的值。 请执行以下操作。

1.选择一个空白单元格以放置第一个可见值,在其中输入以下公式,然后按 按Ctrl + 转移 + 输入 键同时。

=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))

备注:在公式中,C2:C19是要返回第一个可见单元格值的过滤列表,C2是列表的第一个单元格。 您可以根据需要更改它们。

然后,您可以在所选单元格中填充的过滤列表中看到第一个可见单元格的值,如上图所示。


使用VBA过滤后查找并获取第一个可见单元格的值

除了使用上面的数组公式获取筛选列表中第一个可见单元格的值外,您还可以运行以下VBA脚本快速返回筛选列表中的第一个可见单元格。 请执行以下操作。

1.选择一个空白单元格(例如E8)以放置已过滤列表的第一个可见单元格值。

2。 按 其他 + F11 同时打开 Microsoft Visual Basic应用程序 窗口。

3。 在里面 Microsoft Visual Basic应用程序 窗口中,单击 插页 > 模块。 然后将下面的VBA代码复制并粘贴到“模块”窗口中。

VBA代码:在Excel中过滤后查找并获取第一个可见单元格的值

Sub FirstVisibleCell()
   With Worksheets("Sheet1").AutoFilter.Range
       ActiveCell.Value2 = Range("C" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
    End With
End Sub

备注:在代码中,Sheet1是包含过滤列表的工作表名称。 “ C”是您要从中获取第一个可见值的列名。 您可以根据需要更改它们。

3。 按 F5 键运行代码,然后位于C列的已过滤列表的第一个可见单元格将立即填充到单元格E8中。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (17)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
如何在 Excel 中小计过滤后查找并获取十 (10) 个第一个可见单元格的值?
该评论由网站上的主持人最小化
,您好!


Como faço para sabre o número da célula toda vez que realizo o filtro automático no vba via loop?
Por exemplo, ao filtrar o valor 1, retornou as linhas 2, 3 e 4. No próximo loop filtro o valor 2 e retorna as linhas 19, 20, 22。
Como faço para que eu realizar esse filtro eu pegue exatamente o valor da linha atual da linha do filtro e não o valor da primeira linha da planilha?
谢谢。
该评论由网站上的主持人最小化
VBA 中的优秀模块,完美地工作我很欣赏这个!非常感谢这篇文章!!!!
该评论由网站上的主持人最小化
任何人都可以解释这个公式实际上是如何工作的吗?

=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))
该评论由网站上的主持人最小化
我不断收到运行时错误“91”对象变量或未设置块变量。 我的工作表是 Sheet1,标题为 AllBrands。 这是我的公式:

子 FirstVisibleCell()
使用 Worksheets("ALLBRANDS").AutoFilter.Range
ActiveCell.Value2 = Range("H" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
结束

END SUB

任何帮助将不胜感激!
该评论由网站上的主持人最小化
嗨,布布,
该代码在我的情况下运行良好。 您使用的是哪个 Excel 版本?
该评论由网站上的主持人最小化
不幸的是 - 既不是公式 - 给我一个#VALUE错误,也不是VBA对我有用,给我一个运行时错误'1004'
太糟糕了,因为我有 Office 2019,我期待这些功能之一在过滤特定单元格时可以工作...... :-(
该评论由网站上的主持人最小化
‌精彩🌺感谢一百万🙏
该评论由网站上的主持人最小化
谢谢一百万🙏🌺
该评论由网站上的主持人最小化
有用。 非常感谢...
该评论由网站上的主持人最小化
此公式有效,但请注意,如果您有空白单元格,则公式可能会出现故障并选择整个表格中的第一个值,而不仅仅是过滤结果中的值。 我发现的解决方法是用 NULL 或空格替换空白单元格。
该评论由网站上的主持人最小化
首先我有空白......然后所有单元格都被填充但仍然有#VALUE响应。 希望这个公式也适用于文本......! 无论如何感谢您的建议;-)
该评论由网站上的主持人最小化
所以对我来说,上面的答案根本不起作用。 我有一个超过 23k 行的工作簿,这是我多年来一直在努力优化的东西。 今天早上我的解决方案又一次激发了我的灵感。
假设您使用 TABLE 来获取您想要的数据,请执行以下操作:一行(我将其命名为“Rownmbr”)专用于: =CELL([@[YOURFIRSTROW]])
在表格之外,您在某处制定公式:=INDIRECT(CONCATENATE("A";SUBTOTAL(105;Table1[Rownmbr])))
您只需将“A”替换为要从中获取数据的任何位置。 对我来说,这很好用,而且使用它并不是一个繁重的公式,它会使文档进一步陷入困境。
该评论由网站上的主持人最小化
这个解决方案对我来说非常有效,因为我使用的是一张桌子。 这些说明很难遵循,所以希望这个解释会更清楚一点。
假设您有一个名为“Table_Name”的 Excel 表。 首先,在表中创建一个新列并将其命名为“RowNumber”。 
在该新列中,输入公式“=ROW([@RowNumber])” 这将填充新列
在要显示第一个可见值的单元格中,输入公式“=INDIRECT("A"&SUBTOTAL(105,Table_Name[RowNumber]))” “A”是包含所需值的列的字母返回。
SUBTOTAL(105,...) 函数返回给定范围内所有可见行的最小值,在上述情况下,它将返回第一个可见行的行号。
INDIRECT 函数返回给定单元格地址的单元格值。 这就是为什么您需要公式的第一部分包含要显示的列的列字母。 公式的第二部分将返回行号。


该评论由网站上的主持人最小化
你能帮我用arrayformula()在谷歌表格中写这个公式吗

{=INDEX(C2:C19,MIN(IF(SUBTOTAL(3,OFFSET(C2,ROW(C2:C19)-ROW(C2),0)),ROW(C2:C19)-ROW(C2)+1)))}
该评论由网站上的主持人最小化
在下面的 VBA 代码中,你能解释一下是什么 特殊细胞(xlCellTypeVisible)(1) 意思? 什么是 (1) 用于之后 特殊细胞(xlCellTypeVisible)?
ActiveCell.Value2 = Range("C" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2
该评论由网站上的主持人最小化
谢谢!
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护