|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
求教版主,关于用VBA引用另一个表的数据的问题。
我公司有个仓库台帐,因为业务系统很垃圾,所以上面要我做一个仓库台帐,【已上传附件表】,其中“z” 代表总的商品资料表,大概15000行的数据,“zb”为仓库商品出入明细汇总表,将近5000条数据行,并且以后还会陆续增加。“0107C”为本月1至7号的出库登记表,“0107R”为本月1至7号入库登记表,其他“0814C”、“0814R”等等同理。除“Z”表的资料是从业务系统导出的数据,其他的表都是使用SUMIF,VLOOKUP等来引用“z”表的“商品名称、规格、单位、供应商”。
现在的问题是:面对越来越大的数据,【刚做这个工作簿时,“zb”表的数据行才2000多】,单靠引用或统计的函数是行不通的,因为要引用或要统计的单元格都有一个公式,如果在某一个单元格改动一下的话,excel都需要很长的时间来计算。
想写个宏来实现跨表引用的功能,最重要是替代SUMIF,VLOOKUP这些函数。(总之就是在这个数据量如此大的表格中单元格不应出现公式,公式计算实在太慢了,用自动填充都拉到手软头晕),应该如何入手呢?请楼主不吝赐教!
顺便指导一下我胡乱写的那个引用编码的宏,实在见笑了。
Sub bianma()
Dim z_Index As Integer
Dim zb_Index As Integer
Dim z_LastRow As Integer
Dim zb_LastRow As Integer
Dim z_tiaoma As Integer
Dim zb_tiaoma As Integer
Dim z_bianma As Integer
Dim zb_bianma As Integer
zb_LastRow = ActiveSheet.[a65536].End(xlUp).Row
For zb_Index = 2 To zb_LastRow
z_LastRow = ActiveSheet.[a65536].End(xlUp).Row
For z_Index = 2 To z_LastRow
z_tiaoma = Worksheets("z").Cells(z_Index, 1).Value
zb_tiaoma = Worksheets("zb").Cells(zb_Index, 1).Value
z_bianma = Worksheets("z").Cells(iIndex, 2).Value
zb_bianma = Worksheets("zb").Cells(iIndex, 2).Value
If (z_tianma = zb_tiaoma) Then
zb_bianma = z_bianma
End If
Debug.Print CStr(iIndex)
Next
Next
End Sub
由于附件限制不大于244K,所以这个数据表我删除大部分的数据行了。
[ 本帖最后由 080223 于 2009-7-24 15:40 编辑 ] |
|