EXCEL用公式进行行号vba筛选后行号

在EXCEL中如何取得具有特定内容的单元格的行号,或列号。_百度知道
在EXCEL中如何取得具有特定内容的单元格的行号,或列号。
比如,我要在A1到F20中取出内容为应付账款的单元格的行号或者列号。MATCH函数只能取一排或一列,不能取A1到F20的范围。...
比如,我要在A1到F20中取出内容为应付账款的单元格的行号或者列号。MATCH函数只能取一排或一列,不能取A1到F20的范围。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:10957
获赞数:42262
参与团队:
EXCEL中MATCH函数只能查找单行或单列区域,多行多列区域查找某值可使用SUMPRODUCT函数,如下图,查找“应付账款”所在的行,公式用:=SUMPRODUCT((A1:F20=&应付账款&)*ROW(A1:F20));查找列用:=SUMPRODUCT((A1:F20=&应付账款&)*COLUMN(A1:F20));还可以用ADDRESS函数返回单元格地址:=ADDRESS(SUMPRODUCT((A1:F20=&应付账款&)*ROW(A1:F20)),SUMPRODUCT((A1:F20=&应付账款&)*COLUMN(A1:F20)),4);当然上述公式基于查找值在区域中无重复内容。
来自电脑网络类芝麻团
采纳数:2891
获赞数:7739
参与团队:
用 match 函数即可取出特定的内容在查找范围中的相对位置,再进一步计算可得行号、列标 补充:这只能用自定义函数解决了,在VBA中插入模块,函数写法如下Private Function mAdd(Rng As Range, V As String) As StringDim cell As RangeFor Each cell In RngIf cell.Value = V ThenmAdd = cell.Address(0, 0)Exit ForEnd IfNextEnd Function~~~~~~~~~~~~~~~~~~~~使用 方法=madd(a1:f20,&应付账款&)直接得出单元格的地址
本回答被提问者采纳
采纳数:822
获赞数:12897
取列: =COLUMN(A1)取行: =row(A1)
wangkongyu
wangkongyu
擅长:暂未定制
什么是特定内容?
其他1条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 5032|回复: 9
请教如何获取数据筛选状态下各行的行号(原始行号)?
阅读权限10
在线时间 小时
例如要获取下面的工作表筛选后的结果的各行的行号分别为4,5,7:
但是如果统计的工作表不是当前工作簿(例如,当前工作簿GetObject打开另外一个工作簿B,并对B进行筛选,获取B筛选后结果的行号)的话,下面的代码执行结果不是4,5,7了,而是2,3,4,5,6,7.。。。。。请问该如何解决啊?谢谢啦!
& & Dim rng As Range, str$
& & For Each rng In Range(&A2&, [A65536].End(3)).SpecialCells(12)
& && &&&str = str & &,& & rng.Row
& & str = Mid(str, 2, Len(str)-1)
& & MsgBox str
阅读权限95
在线时间 小时
& & & & & & & &
加个判断句Sub Rw()
& & Dim rng As Range, str$
& & For Each rng In Range(&A2:a& & [A65536].End(3).Row)
& & If rng.EntireRow.Hidden = False Then
& && &&&str = str & &,& & rng.Row
& && &&&End If
& & Next
& & str = Mid(str, 2, Len(str) - 1)
& & MsgBox str
End Sub复制代码
阅读权限10
在线时间 小时
& & & & & & & &
这个运行结果也是2,3,4,5,6,7……
.SpecialCells(12) 跟 If rng.EntireRow.Hidden = False Then 效果一样的吧?
阅读权限10
在线时间 小时
wj2368 发表于
加个判断句
这个运行结果也是2,3,4,5,6,7……
.SpecialCells(12) 跟 If rng.EntireRow.Hidden = False Then 效果一样的吧?
阅读权限95
在线时间 小时
& & & & & & & &
heryo 发表于
这个运行结果也是2,3,4,5,6,7……
.SpecialCells(12) 跟 If rng.EntireRow.Hidden = False Then 效果一样 ...Sub Rw()
& & Dim rng As Range, str$
& & For Each rng In Range(&b2:b& & [b65536].End(3).Row)
& & If rng.EntireRow.Hidden = False Then
& && &&&str = str & &,& & rng.Row
& && &&&End If
& & Next
& & str = Mid(str, 2, Len(str) - 1)
& & MsgBox str
End Sub
复制代码
阅读权限95
在线时间 小时
heryo 发表于
这个运行结果也是2,3,4,5,6,7……
.SpecialCells(12) 跟 If rng.EntireRow.Hidden = False Then 效果一样 ...
.......................
(18.95 KB, 下载次数: 5)
12:18 上传
阅读权限10
在线时间 小时
如何将提取的行号显示在单元格中呢?
阅读权限20
在线时间 小时
楼上都已经将行号给提取出来了,你就将行号赋值到你要的单元格中就0了
阅读权限10
在线时间 小时
'获得筛选结果的行号,返回到数组中
Sub 函数调用()
& & Dim 行号 As Variant
& & 行号 = GetRowNum(&A&)
& & '所得行号是一个数组,其中行号(0)未使用,如查筛选的第一行是标题的话,行号(1)是标题所在行,所以你的结果
是从行号(2)开始的。
End Sub
Function GetRowNum(Col As String) As Variant
& & Dim i As Long
& & Dim rng As Range
& & Dim rng2 As Range
& & Dim RowS()
& & i = 1
& & '将筛指定列的可见数据赋给rng,12是可见,2是常量,23是16+4+1+2
& & Set rng = Range(Col & &:& & Col).SpecialCells(12).SpecialCells(2, 23)
& & ReDim RowS(0 To rng.Count)
& & For Each rng2 In rng
& && &&&RowS(i) = rng2.Row
& && &&&i = i + 1
& & Next
& & GetRowNum = RowS
End Function复制代码
阅读权限20
在线时间 小时
.......................
老师请你给我写个VBA代码好吗?若有空请帮助,谢谢,若没空,请原谅打扰
最新热点 /1
本活动是由微软(中国)有限公司发起,申请通过者可以得到Office 365企业级E3 试用账号,并享有全套Office 365客户端及云端高效、协作办公体验。 机会有限,先到先得!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师EXCEL中使用INDEX+SMALL+IF来进行一对多查询的组合方法
条目网新点子摘要:EXCEL中使用INDEX+SMALL+IF来进行一对多查询的组合方法
&&本篇文章标题为EXCEL中使用INDEX+SMALL+IF来进行一对多查询的组合方法,由www.tiaomu.com提供阅读.
&&&&&&EXCEL中使用INDEX+SMALL+IF来进行一对多查询的组合方法在EXCE联播文字版2017年L中处理数据查询时,经常要使用VLO泸州网OKUP或LOOKUP函数。但有时符合条件的查询结果有多条,这就需要用一对多查询,这时再使用VLOOKUP或LOOKUP就不是太容易能实现了,这种情况可以使用INDEX + SMALL + IF组合函数来实现这个功能。如下图所示,要根据左边表中的"手机"这个条件,查询提取B列所有符合要求的数据。使用INDEX + SMALL + IF组合函数的常用公式是:在F2单元格中联播张东元输入数组公式=IFERROR(INDEX(B:B,SMAL联播重播时间L(IF(A$1:A$8=F$1,ROW($1:$8)),ROW(A1))),""),按CTRL + SHIFT + ENTER完成输入,再向下填联播主要内容摘要充公式即可。公式中的IF(A$1:A$8=F$唐山一刀哥1,ROW($1:$8)),其机理是先判断A$1:A$8的值是否和F1单元格的值相同,如果相等则返回A列所对应的行号,否则返回FALSE。整个IF函数返回的数组公式结果是:{FALSE;2;FALSE;4;5;FALSE;FALSE;8}。函数SMALL(IF(A$1:A$8=F$1,ROW($1:$8)),ROW(A1))的作用是对IF的返回值进行取数,随着公式的填充,依次提取第1、2、3、4……个最小值,由此得到符合要求的行号。最后使用INDEX函数,以SMALL函数提取的行号作为索引值,在B列取出相应的数据。随着公式向下填充,后面的行号已经不再符合要求,SMALL函数最后所得的结果是错误值#NUM,长江号视频为了避免公式显示错误值,使用了IFERROR函数进行处理,使之返回一个空文本。
&&如果对本文有异议,请联系我们的邮箱,我站将积极予以配合.
&&复制一下信息到邮件:当前栏目id:74;当前页id:755959,大意内容:EXCEL中使用INDEX+SMALL+IF来进行一对多查询的组合方法.
上一篇:下一篇:
相关阅读排行榜
&&&&&&&&&&&&
热门推荐项目网
最新文章条目
资讯图片条目
推荐热点视频条目
Copyright & 2005 - 2018 www.tiaomu.com.&& 文章内容
Excel用函数公式筛选数据的方法
[日期:] & 来源:IT部落窝& 作者:IT部落窝 & 阅读:37999次[字体:
内容提要:本文通过实例剖析Excel中经典的筛选数据的函数公式的用法。
  Excel中关于筛选数据最简单的方法,是使用数据透视表完成。如果对透视表不熟悉,可以使用Excel函数写公式来筛选。
  借论坛今天的每日一题题目:来剖析一下经典的筛选公式的用法。
  如下图,题目说明:A1:F11为数据源。筛选各组中工资最高的人的各项资料(如果最高工资重复,请按顺序分别显示出来),详见附件。
  A18输入公式,按下ctrl+shift+enter组合键完成数组公式的输入,然后右拉下拉复制公式。=INDEX($B:$F,SMALL(IF(($F$2:$F$11=MAX(($D$2:$D$11=$A$16)*$F$2:$F$11))*($D$2:$D$11=$A$16),ROW($2:$11),4^8),ROW(A1)),COLUMN(A1))&""
  解题思路:确定两个条件:组数:D2:D11=$A16;最高工资:F2:F11=MAX((D2:D11=A16)*F2:F11))  公式构成:index(区域,行,列)&""――index($B:$F,行部分,COLUMN(A1)) &""。
  用index+small函数构造出来的筛选公式,经典在于获取出相应的行。剖析公式一般从内到位,用F9键逐一查看运算结果。
  第一:small部分,获取行号,剖析如下:
  1.MAX((D2:D11=A16)*F2:F11))*(D2:D11=A16)  D2:D11=A16,判断D列的组别和A16组别是否相等,得到FALSE和TRUE构成的逻辑数组。  (D2:D11=A16)*F2:F11,计算结果将符合条件的true对应的数字取出来:  {0;0;0;;0;0;0;0}  然后用max(数字),取出最大值9000。  2.IF部分:  IF(条件,是,否)――if(F2:F11=9000,ROW($2:$11),4^8)  在F2:F11区域中查找等于第一部分max计算的最大值,如果等于最大值,就返回对应的行号(ROW($2:$11)),否则就返回4^8。4^8:是4的8次方,结果等于65536 即2003中最大的行号。
  3.small部分:  Small(最大行号和符合条件的行号,row(A1)  用SMALL在65536和对应的一个行号中取最小值,得到的就是符合条件的行号。  SMALL({;36;;;65536},ROW(A1)),结果是5。
  第二:index(区域,行,列)  Index($B:$F,5,COLUMN(A1)),返回B:F列这个区域的第五行第一列,对应的单元格就是B5单元格。
  第三:为了美观,最后添加&""  上面index部分就可以完成筛选数据,但在下拉右拉复制公式时,超过结果以外的单元格会显示“0”,如果想去掉0,直接用空白单元格,不显示0,就可以在公式最后添加&""。
  &""是什么意思呢? &是个文本粘贴符,后面的""是表示空白文本,就等于在后面强制性的把(0)粘贴成了空白文本。
photoshop教程
平面设计教程相关教程:
经典Excel学习视频及教程推荐:
Excel优秀工具推荐:
小工具推荐:

我要回帖

更多关于 excel留下指定文字 的文章

 

随机推荐