ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6190|回复: 17

[讨论] 怎么能让数据重复输入时有提示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-21 20:13 | 显示全部楼层 |阅读模式
怎么能让Excel数据重复输入自动报警  ,我有两种方法,但是都不尽善尽美,谁有更加完美的方法共享一下啊

如怎么让A列有重复输入是报警

1. 在数据有效性里输入公式

=COUNTIF(A:A,A1)=1

此方法只对通过键盘输入的数据有效,当通过复制,粘贴时,必须先复制数据内容,然后双击单元

格,然后粘贴,才可判断出,并且有时会判断不准确!

2,通过代码实现

Sub worksheet_change(ByVal target As Range)

  Dim rng As Range

  Set rng = Range("A:A")

  If Application.WorksheetFunction.CountIf(rng, target) > 1 Then

    target.ClearContents

    MsgBox "数据在A:A中已存在"

  End If

End Sub

无论是直接复制粘贴,还是键盘输入均可判断出.但当同时选定A列意外超过1个以上的单元格删除数据是,会报错   错误13,类型不匹配.

另外
1...我想实现这样的功能,不知能实现吗?

但在A列的单元格输入时,如果单元格内的字符数连续相同超过4个时报警

如A1   中华人民共和国

  A2  中华人           '不报警
  
  A3  中国人民         '报警

能实现吗?

2...如何判断同一列内连续的数据或数值超过5个是报警

如     列           值
       A1                   2
          A2                   2  不报警
       A3                   2  不报警
       A4                   2  不报警
       A5                   2  不报警
       A6                   2  报警
或    A6                   1  不报警
       A7                   1  不报警
       A8                   1  不报警
       A9                   1  不报警
       A10                 1  不报警
       A11                 1  报警
或    A11                 1  不报警
       A12                 1  不报警
       A13                 1  不报警
       A14                 1  不报警
       A15                 1  不报警
       A16                 1  报警


谁有好方法

[ 本帖最后由 wulai8377 于 2011-3-22 09:46 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-21 20:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是有难度
也不至于没人应声啊

每次都要自己先顶

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-22 09:13 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-22 09:49 | 显示全部楼层
同时问一下
数据有效性判断重复是能否
提示
与哪个单元格重复

TA的精华主题

TA的得分主题

发表于 2011-3-22 10:28 | 显示全部楼层
Sub worksheet_change(ByVal target As Range)
If target.Count > 1 Then Exit Sub
  Dim rng As Range
  Set rng = Range("A:A")
  If Application.WorksheetFunction.CountIf(rng, target) > 1 Then
    target.ClearContents
    MsgBox "数据在A:A中已存在"
  End If
End Sub
4楼要求有效性做不到

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-22 11:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代码错误消失
谢谢5楼

只是不明白为什么

TA的精华主题

TA的得分主题

发表于 2011-3-22 11:25 | 显示全部楼层
CountIf的条件不能是多个单元格

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-22 11:30 | 显示全部楼层
4喽的功能代码怎么实现

TA的精华主题

TA的得分主题

发表于 2011-3-22 14:30 | 显示全部楼层
Sub worksheet_change(ByVal target As Range)
If target.Count > 1 Then Exit Sub
  Dim rng As Range
  Set rng = Range("A:A")
  If Application.WorksheetFunction.CountIf(rng, target) > 1 Then
     MsgBox "数据在" & [a:a].Find(target).Address & "中已存在"
   target.ClearContents
   End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-22 19:58 | 显示全部楼层
谢谢!到此
我1楼前两个问题全部解决了


我1楼的后两个问题能解决吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 17:53 , Processed in 0.031493 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表