我是这样得来的,如下,可不可以直接在字典中处理后赋值 Sub zwgk_d22() '请教得来,取分配表代码、序号、年度、日期、金额 Dim d As Object, cel As Range, rng, i%, m%, y%, arr '声明一个对象变量来存放该对象的引用。Dim as Object 采用后期绑定方式。 Set d = CreateObject("Scripting.Dictionary") '创建字典对象d With Sheets(4) rng = .Range(.[k2], .[m2].End(4)) End With ReDim arr(1 To UBound(rng), 1 To 4) For i = 1 To UBound(rng) w = Left(rng(i, 3), 8) If d(w) = "" Then m = m + 1 d(w) = m Sheets(2).Cells(m + 1, "a") = m arr(m, 1) = rng(i, 1): arr(m, 2) = "'" & rng(i, 2): arr(m, 4) = "'" & w & "0000" Else arr(d(w), 1) = arr(d(w), 1) + rng(i, 1) End If arr(m, 1) = arr(d(w), 1) Next i With Sheets(2) .[g2].Resize(m, 4) = arr For Each cel In .Range("g2").Resize(m, 1) cel = (Round(cel.Value / 10000, 4)) Next .Range("b2").Resize(m, 1).Value = Sheets(4).Range("b2").Value .Range("c2").Resize(m, 1).Value = "钟祥市财政局" .Range("f2").Resize(m, 1).Value = 0 .Range("e2").Resize(m, 1).Value = .Range("g2").Resize(m, 1).Value .Range("a2").Resize(m, 4).NumberFormatLocal = "@" .Range("e2").Resize(m, 3).NumberFormatLocal = "#,##0.0000" .Range("h2").Resize(m, 3).NumberFormatLocal = "@" End With End Sub
|