ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦p¦ó±N¤£¦P¤u§@ªíªº¤ºªí³æ¸ê®Æ¶×Á`¨ì¦P¤@¤u§@ªí¤º

¥»©«³Ì«á¥Ñ GBKEE ©ó 2010-6-21 07:44 ½s¿è

¦^´_ 1# wendy
¸Õ¸Õ¬Ý
  1. Sub Ex()
  2.     Dim Sh As Worksheet, R As Range, C As Range, S$, d(1 To 3) As Object, Ar
  3.     Set d(1) = CreateObject("scripting.dictionary")
  4.     Set d(2) = CreateObject("scripting.dictionary")
  5.     Set d(3) = CreateObject("scripting.dictionary")
  6.     Ar = Join(Application.Transpose(Application.Transpose(Sheets("1").[A3:F3])), ",")
  7.     For Each Sh In Sheets(Array("1", "2", "3", "4"))
  8.         With Sh
  9.             For Each R In .Range("g3", .Range("iv3").End(xlToLeft)(1, 0))
  10.                 d(1)(R.Value) = ""
  11.                 For Each C In .Range(R(2, 1), .Cells(.Range("F" & Rows.Count).End(xlUp).Row - 1, R.Column)).SpecialCells(xlCellTypeConstants)
  12.                     If C <> "" Then
  13.                         S = R.Value & Join(Application.Transpose(Application.Transpose(.Cells(C.Row, "A").Cells.Resize(1, 6).Value)), "")
  14.                         d(2)(S) = C.Value
  15.                         S = Join(Application.Transpose(Application.Transpose(.Cells(C.Row, "A").Cells.Resize(1, 6).Value)), "")
  16.                         d(3)(S) = .Cells(C.Row, "A").Cells.Resize(1, 6).Value
  17.                     End If
  18.                 Next
  19.             Next
  20.         End With
  21.     Next
  22.     With Sheets("­n¶×¾ãªºÁ`ªí")
  23.         .Cells.Clear
  24.         Ar = Split(Ar & "," & Join(d(1).keys, ","), ",")
  25.         .[A1].Resize(, UBound(Ar) + 1) = Ar
  26.         .[A2].Resize(d(3).Count, 6) = Application.Transpose(Application.Transpose(d(3).items))
  27.         For Each R In .Range("a1").CurrentRegion.Columns
  28.             If R.Column > 6 Then
  29.                 For Each C In R.Cells
  30.                     S = R.Cells(1) & Join(Application.Transpose(Application.Transpose(.Cells(C.Row, "A").Cells.Resize(1, 6).Value)), "")
  31.                     If d(2).Exists(S) Then C = d(2)(S)
  32.                 Next
  33.             End If
  34.         Next
  35.         .Range("a1").CurrentRegion.Sort KEY1:=.[A1], KEY2:=.[F1], Header:=xlYes
  36.         
  37.         Set R = .Range("a1").CurrentRegion
  38.         Set R = .Range("a1").CurrentRegion.Cells(R.Rows.Count, R.Columns.Count)
  39.         
  40.         .Cells(R.Row + 1, "F") = "Á`­p"
  41.         .Range(.Cells(R.Row + 1, "G"), R.Offset(1)) = "=SUM(R2C:R[-1]C)"
  42.         .Range(.Cells(R.Row + 1, "G"), R.Offset(1)).Value = .Range(.Cells(R.Row + 1, "G"), R.Offset(1)).Value
  43.         
  44.         .Cells(1, R.Column + 1) = "Á`­p"
  45.         .Range(.Cells(2, R.Column + 1), R.Offset(, 1)) = "=SUM(RC7:RC[-1])"
  46.         .Range(.Cells(2, R.Column + 1), R.Offset(, 1)).Value = .Range(.Cells(2, R.Column + 1), R.Offset(, 1)).Value
  47.     End With
  48. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¡i°µ¤Hªº¶}©l¡j¨C¤@¤Ñ³£¬O¬G¤Hªº¶}©l¡A¨C¤@­Ó®É¨è³£¬O¦Û¤vªºÄµ±§¡C
ªð¦^¦Cªí ¤W¤@¥DÃD