Excel VBA 大数据量校验
往一个Sheet里面复制大量的数据后(51列6万行),如何对这些数据进行校验?进行列校验,比如第一列规定为ID(int),对所有数据进行校验看是否符合列规则,不要逐个单元...
往一个Sheet里面复制大量的数据后(51列 6万行),如何对这些数据进行校验?进行列校验,比如第一列规定为ID(int),对所有数据进行校验看是否符合列规则,不要逐个单元格的去校验,那样时间太长,有什么好的办法去处理?
数据不管对错,可以复制,但是在sheet2中报错:错误所在单元格+错误信息
用VBA处理,方法好再加分!~
没办法读取到错误信息只能将无效数据圈起来,可惜发现 Cells.Select
ActiveSheet.CircleInvalid
不是完全没圈出来就是少很多没圈的...... 展开
数据不管对错,可以复制,但是在sheet2中报错:错误所在单元格+错误信息
用VBA处理,方法好再加分!~
没办法读取到错误信息只能将无效数据圈起来,可惜发现 Cells.Select
ActiveSheet.CircleInvalid
不是完全没圈出来就是少很多没圈的...... 展开
4个回答
展开全部
用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
如果你的数据比较规范的的话可以在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事件...
展开全部
可以用VBA逐单元格检查的,方法是把单元格的数值一次性的赋值给一个变量。
举例 : X = Range("A1:E60000").Value
X是一个二维数组,对这个二维数组的数值进行检查是很快的
举例 : X = Range("A1:E60000").Value
X是一个二维数组,对这个二维数组的数值进行检查是很快的
追问
数据量太大了,有10万行 80多列啊!~您能写个简单的例子吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
314064076...加我,我来帮你处理...
更多追问追答
追问
公司里面,QQ等聊天软件被禁用了.....
追答
发到邮箱里面,在表里面把详细的要求写出来.我弄发发给你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EXCEL里有很多校验类函数
追问
现在的主要问题是如何校验?事件触发不用管,我要一个校验的解决方案,也就是执行步骤
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询