返回列表 上一主題 發帖

列増減

回復 5# y663258


    不知樓主是不是這個意思
  1. Sub Ex()
  2. Dim A As Range, Ar(31), Ay()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With Sheet1
  5.    For Each A In .Range(.[P2], .[P65536].End(xlUp))
  6.    If A.Offset <> "" Then
  7.      If d(A.Value) = "" Then
  8.         d(A.Value) = A.Offset(, 1)
  9.         Else
  10.         d(A.Value) = d(A.Value) & "," & A.Offset(, 1)
  11.      End If
  12.     End If
  13.   Next
  14. End With
  15. For Each ky In d.keys
  16.    mystr = Split(d(ky), ",")
  17.        Ar(0) = ky: Ar(1) = "95-013-4-001": Ar(3) = "大型"
  18.        For i = 0 To UBound(mystr)
  19.           Ar(i + 4) = mystr(i)
  20.        Next
  21.        If d(ky) <> "" Then
  22.         Ar(24) = Mid(mystr(0), 1, 2): Ar(26) = Val(Mid(mystr(0), 1, 2)): Ar(27) = Mid(mystr(0), 1, 2)
  23.         Ar(28) = Mid(mystr(0), 1, 2) * 2: Ar(29) = 373.5: Ar(30) = Ar(28) * Ar(29) / 100000
  24.        End If
  25.    ReDim Preserve Ay(x)
  26.    Ay(x) = Ar
  27.    x = x + 1
  28.    Erase Ar
  29. Next
  30. Sheet2.[C5:Ay65536] = ""
  31. Sheet2.[B5].Resize(x, 31) = Application.Transpose(Application.Transpose(Ay))
  32. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 8# y663258


    超過Y欄的數量要自動增減會有困難
光是表頭就要重繪
其餘問題請參考
  1. Sub Ex()
  2. Dim A As Range, Ar(31), Ay()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With Sheet1
  5.    For Each A In .Range(.[P2], .[P65536].End(xlUp))
  6.    If A.Offset <> "" Then
  7.      If d(A.Value) = "" Then
  8.         d(A.Value) = A.Offset(, 1)
  9.         Else
  10.         d(A.Value) = d(A.Value) & "," & A.Offset(, 1)
  11.      End If
  12.     End If
  13.   Next
  14. End With
  15. For Each ky In d.keys
  16.    mystr = Split(d(ky), ",")
  17.        Ar(0) = "第一期" & ky: Ar(1) = "95-013-4-001": Ar(3) = "大型"
  18.        For i = 0 To UBound(mystr)
  19.           Ar(i + 4) = mystr(i)
  20.        Next
  21.        If d(ky) <> "" Then
  22.         Ar(24) = mystr(UBound(mystr)): Ar(26) = Val(Mid(mystr(0), 1, 2)): Ar(27) = Mid(mystr(0), 1, 2)
  23.         Ar(28) = Mid(mystr(0), 1, 2) * 2: Ar(29) = 373.5: Ar(30) = Ar(28) * Ar(29) / 100000
  24.        End If
  25.    ReDim Preserve Ay(x)
  26.    Ay(x) = Ar
  27.    x = x + 1
  28.    Erase Ar
  29. Next
  30. Sheet2.[B5:Ay65536] = ""
  31. Sheet2.[B5].Resize(x, 31) = Application.Transpose(Application.Transpose(Ay))
  32. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題