本帖最后由 bcrun 于 2010-11-15 11:45:31 编辑

解决方案 »

  1.   

    下一步是做什么?
    可以把数据用SQL语句写到ACCESS数据库
    也可以把EXCEL当做数据库使用
      

  2.   

    楼主应该设置一个二维数组,选定excel的范围,一起读入,后面再分析数据.
      

  3.   

    同意,用二维数组要快些。将strTmp = sheet.Cells(i, j) 的左边用二维数组元素代替。
      

  4.   

    我就是将excel的数据赋到一个二维数组r中,然后进行计算,再写到excel中。
    我的意思是我执行上面的for循环,就需要半多分钟的时间,我觉得很慢,初用vb还不知如何提高读取效率,请问,有别的什么好办法么?
      

  5.   

     strTmp = sheet.Cells(i, j)
      If strTmp = "" Then Exit For
      r(i - 1, j - 1) = strTmp改为:
     r(i - 1, j - 1) = sheet.Cells(i, j)
    因为双循环里面的要判断很多次,中间变量赋值又没什么意义
      

  6.   

    row = sheet.UsedRange.Rows.Count
    col = sheet.UsedRange.Columns.Count
    ReDim r(row - 1, col - 1)
    with sheetFor i = 1 To sheet.UsedRange.Rows.Count  -->row
      For j = 1 To sheet.UsedRange.Columns.Count-->col  strTmp = .Cells(i, j)  If strTmp = "" Then Exit For
      r(i - 1, j - 1) = strTmp
      Next j
    Next i
    endwith
      

  7.   

    本帖最后由 bcrun 于 2010-11-15 11:45:34 编辑
      

  8.   

    我的excel表格数据中间有空格的。我若是退出,就不能再读到后面的值了。
      

  9.   

    用二维数组 也一样的吧 因为 Row Col 多少个 坑 就明摆着 还是得一个一个Cell去读数据量大的话 以前在DOS时 我都会先将文件拷进Ram 虚拟内存 读取快数倍 现在我也会这样做
      

  10.   

      If strTmp = ""  
      Then Exit For
    这个代码就有问题,若是空值不能退出,也要进行相应的赋值
      

  11.   

    使用ADO对象可以读写Excel文件的,套用SQL语句,这个效率应该比较高。
      

  12.   

    ADO可以把EXCEL做數據庫處理,其他數據文件也行,這個應該是不錯的!自己可以試試看!
      

  13.   

    看看这个是否合你用吧:
    http://download.csdn.net/source/369462