Excel VBA 大数据量校验

往一个Sheet里面复制大量的数据后(51列6万行),如何对这些数据进行校验?进行列校验,比如第一列规定为ID(int),对所有数据进行校验看是否符合列规则,不要逐个单元... 往一个Sheet里面复制大量的数据后(51列 6万行),如何对这些数据进行校验?进行列校验,比如第一列规定为ID(int),对所有数据进行校验看是否符合列规则,不要逐个单元格的去校验,那样时间太长,有什么好的办法去处理?
数据不管对错,可以复制,但是在sheet2中报错:错误所在单元格+错误信息

用VBA处理,方法好再加分!~
没办法读取到错误信息只能将无效数据圈起来,可惜发现 Cells.Select
ActiveSheet.CircleInvalid
不是完全没圈出来就是少很多没圈的......
展开
 我来答
ymhong
2012-03-14 · TA获得超过164个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:186万
展开全部
用Excel来管理这些数据确实费劲了些,而且效率不高。
如果你的数据比较规范的的话可以在VBA中ADO+SQL来提取和处理数据,要比直接读取单元格方便的多,而且很高效。最好给几个数据测试一下。
SQL语句要根据你数据的规则来写,没法给你举例子。
下面是我用到过的一段主要代码你可以参考一下。

Dim Cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim Sql As String, i As Long
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName

Sql = "SELECT distinct sample_number,sampled_date,a_point_desc,a_batch,sin_spec "
Sql = Sql & "FROM [Sheet1$] "
Sql = Sql & "where product = '" & Product & "' "
Sql = Sql & "and product_grade = '" & Grade & "' "
Sql = Sql & "ORDER BY sample_number ASC "

'debug.Print Sql
Set rs = Cnn.Execute(Sql)
Sheets("报表").[A1].CopyFromRecordset rs

rs.Close
Cnn.Close
追问
就是被规定死了,用Excel做第一次数据有效性校验,80多列都规定死了什么内容(数据类型、字段长度),复制进去后触发worksheet_change事件...
函安白zK
2012-03-14 · TA获得超过3994个赞
知道大有可为答主
回答量:1434
采纳率:50%
帮助的人:727万
展开全部
可以用VBA逐单元格检查的,方法是把单元格的数值一次性的赋值给一个变量。
举例 : X = Range("A1:E60000").Value
X是一个二维数组,对这个二维数组的数值进行检查是很快的
追问
数据量太大了,有10万行  80多列啊!~您能写个简单的例子吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjhitxu1132
2012-03-13 · TA获得超过2001个赞
知道小有建树答主
回答量:1735
采纳率:0%
帮助的人:1001万
展开全部
314064076...加我,我来帮你处理...
更多追问追答
追问
公司里面,QQ等聊天软件被禁用了.....
追答
发到邮箱里面,在表里面把详细的要求写出来.我弄发发给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccbhnldlrb
2012-03-13 · TA获得超过231个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:137万
展开全部
EXCEL里有很多校验类函数
追问
现在的主要问题是如何校验?事件触发不用管,我要一个校验的解决方案,也就是执行步骤
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式