网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月09日漏签0天
excel吧 关注:281,064贴子:1,546,334
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回excel吧
>0< 加载中...

请宏高手来帮忙啊,在线等!!!!

  • 只看楼主
  • 收藏

  • 回复
  • simplicity_NO
  • 平E近人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
急切请教一个问题:
  A  B C D
1 5  9 0 1
2 1  0 3 0
3 5  9 0 4
4 5  9 0 1
5 8  3 6 0

表中格式如上:
 我想用执行宏的办法,我用鼠标选中A行的连续的几列,执行宏后删除所选择列的向下所有与它相等的行,比如说我要选中第1行中的A,B,C列,结果是将2,3,4,5……(最后)行与A,B,C 列相等的行删除掉,此举例数据将会把第3行与第四行删除。
 谢谢各位宏高手们了! 


  • tedzhu
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用筛选,不必编宏


北京勤哲软件技术
勤哲Excel服务器2025学习和下载。用Excel自动生成excel开发软件及手机app.软博会金奖产品,适合于各行各业的管理人员使用。
2025-05-09 22:23广告
立即查看
2025-05-09 22:23:03
广告
  • zsh_000
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已在VBA基础交流里答复了.


  • simplicity_NO
  • 平E近人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
zsh_000 :谢谢你这么热心的帮忙啊!
 我试了这个宏,可以将从A列开始选择的以下数据删除,但是如果从B列开始选择往下就不行了,我试着改,但还是技术有限,没能实现 ,谢谢你再帮忙看一下.如上面的例子,我选第一行的901,就不能将第四行的901那行删除.


  • zsh_000
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基本与原来的不变,只改了几句,后面的备注我就不打了,你自己对之前的代码里的注解行了.(我懒,我认!~) (*^-^*)

Sub t()

NCCOU = Selection.Columns.Count 'Ðе½µ±Ç°ÒÑÑ¡¶¨µ¥Ôª¸ñÊý
NROW = Selection.Cells(1, 1).Row 'µ±Ç°ÐÐ
NCOL = Selection.Cells(1, 1).Column 'µ±Ç°¿ªÊ¼µ¥Ôª¸ñÁÐ

Dim DA() '¼Ç¼ѡ¶¨µ¥Ôª¸ñÖµµÄÊý×é
NI = 0 '¼Ç¼Êý×鵱ǰϱê

For i = 1 To NCCOU '°Ñµ±Ç°Ñ¡¶¨ÇøÓòµÄÖµ¸³¸øÊý×é
 NI = NI + 1 'Êý×éϱê¼Ó1
 ReDim Preserve DA(NI) '¸Ä±äÊý×鵱ǰϱê×î´óÖµ
 DA(NI) = Selection.Cells(1, i) '¸³Öµ¸ø×îºóÒ»¸öÊý×é
Next

For NR = ActiveCell.Row + 1 To Cells.SpecialCells(xlCellTypeLastCell).Row '¿ªÊ¼ºË¶ÔÑ¡¶¨ÇøÓòÏ·½µÄÆ¥ÅäÊý¾Ý
 
 For RC = 1 To NCCOU
 If Cells(NR, NCOL + RC - 1) = "" Then Exit For 'ÈçµÈÓÚ¿Õ¸ñÍ˳ö±¾ÐÐÑ­»·
 If Cells(NR, NCOL + RC - 1) <> DA(RC) Then Exit For 'Èç²»µÈÓÚÊý×éÄڵĶÔÓ¦ÄÚÈÝÍ˳ö±¾ÐÐÑ­»·
 If RC < NCCOU Then GoTo RE 'Èçδ¶Ô±Èµ½×îºóÒ»¸öµ¥Ôª¸ñÍ˳ö±¾´ÎÑ­»·
 
 Range(Cells(NR, NCOL), Cells(NR, NCOL + NCCOU - 1)).Select 'Ñ¡¶¨Ìõ¼þÇøÓò,·½±ã²é¿´
 
 If MsgBox("·ûºÏÌõ¼þ,ÊÇ·ñɾ³ý!", 4) <> 6 Then Exit For 'Èç¹û²»´ð"ÊÇ"Í˳ö±¾´ÎÑ­»·
 Cells(NR, 1).EntireRow.Delete 'ɾ³ýÄ¿±êÐÐ
 NR = NR - 1 'ɾ³ýºóÐÐÉÙ-1,²»¼õ1»áÓÐBUG
 
RE: 'É趨һ¸öÌø×ª,ÒòѧÒÕ²»¾«,ÒòÄÜÈç´ËÃÖ²¹

 Next
Next
End Sub


  • 202.241.224.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢zsh_000,这个问题解决了,你真的好厉害啊!佩服


  • simplicity_NO
  • 平E近人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以前我曾提过这样一个问题,后面已由热心人ZSH_000给出了答案,可我现在想修改一下这个宏:请先看上次的问题吧:
如下:
 我要用鼠标选中一列中的若干行,然后要在选中列的右边单元格中得到其中一个(比如3)数字出现的比例,该怎么定义宏呢?如果能在界面中加一个按钮那更好了,请各位一定帮忙解决啊,我用了一个公式,但只能统计一整列的数据比例,b1=(COUNTIF(A1:A1000,3)/COUNT(A1:A100)),我想用宏解决,怎么做啊? 
 主要是要考虑到对没选中的单元格的的右边单元格没影响,例如: 
 选中的是左边的A列3,1,0,3 (即B列有数据的几列) ,B列边是出现3的百分比数 
 1 A B 
 2 4 
 3 3 0.50 
 4 1 0.50
 5 0 0.50
 6 3 0.50 
 7 5 
 8 4 

有几个宏和大家分享: 
得到当前单元格的地址 

msgbox ActiveCell.Address 

测试选择状态的单元格的行数 

MsgBox Selection.Rows.Count 

测试选择状态的单元格的列数 

MsgBox Selection.Columns.Count 

测试选择状态的单元格的地址 

Selection.Address 
 
 
 
'选定区域的第一单元格的行号. 
Selection.Cells(1, 1).Row 

'你一共选定了几行. 
Selection.Rows.Count 

'统计表中F列中的数值单元格个数. 
WorksheetFunction.Count(Range("F:F")) 

'由上一条演变而来的统计选定单元格的数值单元格个数. 
WorksheetFunction.Count(Selection.Range(Cells(1, 1), _ 
Cells.SpecialCells(xlCellTypeLastCell))) 

'再由上一条演变而来的统计选定单元格的数值中,有多少个单元格的数值为"3" 
'当然你不一定要统计"3",可你引用单元格值来运行. 
WorksheetFunction.CountIf(Selection.Range(Cells(1, 1),_ Cells.SpecialCells(xlCellTypeLastCell)), 3) 

'如果你要选区内每个单元格都得统计,你那可以用 FOR 循环来实现. 
CROWS = Selection.Rows.Count '得到选区总行数 
For I = 1 To CROWS 
  MsgBox Selection.Cells(I,1) '显示选区内I行1列的值. 
  MsgBox Selection.Cells(I,2)'显示选区内I行2列的值. 
Next 

现在我想修改一下,用光标的选择方式
如表中数据:
 A B C
 1 0.1110 4 0
 2 0.1221 3 0.50 
 3 0.1222 1 0.50 
 4 0.1223 0 0.50 
 5 0.1224 3 0.50 
 6 0.1225 3 1.00
 7 0.1326 3 1.00
 8 0.2324 3 

A列是经过升序排列后的,我用光标选择A列的A1:A7,执行宏后的结果是:判断A1到A7的区间,(0-4是一个区间,5-9是一个区间,最后一位是否在一个区间,还要看它的尾数的前一位是否相等,如些往前位数推)如果尾数在同一区间,如上:A1是一个区间,A2:A5是一个区间,A6和A7各为一个区间,A8因为没有选择,所以不在运算内,A1和A2:A5,不是一个区间,是因为A1的千分位'1',和A2:A5的千分位'2'不相等,A6与A2:A5不在同一区间,是因为尾数'4'和'5'不在同一区间,A6和A7不在同一区间,是因为百分位'1''2'不相等.
 结果是生成C列,A列和B列的数据是提供的参数.C列将是按区间统计B列中出现的'3'在区间内出现的百分比数,同一个区间的百分比是一样的,如A1,它的B1没有3,所以C列结果是0%,A2:A5在同一区间,B1到B5中'3'的个数是2个,总行数是4行,所以百分比是50%,化为小数为0.50,如此类推!当然我选择的数不一定都在A列,有可能在D列,那么将在F列得出结果.
 说了这么一大堆,不知各位是否明白了我的意思呢!真是难为大家了!


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示