返回列表 上一主題 發帖

[發問] 多行資料合併為一行

上傳檔案無法正常開啟(格式太多), 大約寫一下:注意工作表名稱是否相同
  1. Sub TEST()
  2. Dim R&, C, N&, Arr, Brr, xD, i&, T$
  3. Sheets("工作表2").UsedRange.Offset(1, 0).Clear
  4. Arr = Range([工作表1!A2], [工作表1!A65536].End(xlUp)(1, 5))
  5. ReDim Brr(1 To UBound(Arr), 1 To 8)
  6. Set xD = CreateObject("Scripting.Dictionary")

  7. For i = 1 To UBound(Arr)
  8.     T = Arr(i, 1): R = xD(T)
  9.     If R = 0 Then
  10.        N = N + 1: R = N: xD(T) = N
  11.        Brr(R, 1) = Arr(i, 1):  Brr(R, 2) = Arr(i, 2): Brr(R, 3) = Arr(i, 3)
  12.     End If
  13.     C = Application.Match(Arr(i, 4), Array("國語", "英文", "數學", "物理", "化學"), 0)
  14.     Brr(R, C + 3) = Arr(i, 5)
  15. Next i
  16. [工作表2!A2].Resize(N, 8) = Brr
  17. End Sub
複製代碼

TOP

回復 3# Changbanana

Long = &
Integer = %
String = $

有時間可以進VBE內建說明檔多看看, 能挖到不少知識及技巧!
另〔檢視〕〔瀏覽物件〕也是不錯的視窗,可以一一去看各種物件.屬性等等的說明!

TOP

回復 5# Changbanana


Brr(R, C + 3) = Arr(i, 5)  這是工作表1的〔分數〕欄(E欄),不須變動

若之後想要再增加一個科目
C = Application.Match(Arr(i, 4), Array("國語", "英文", "數學", "物理", "化學","社會"), 0)

C是用來判斷〔科目〕分數要放在工作表2的第幾個欄位,
若科目是〔社會〕,C=6,6+3=9,分數放在第9欄(I欄)

TOP

回復 9# popomilk


brr( xxx,xxx)又是啥意思?  >〔陣列〕Array 
CreateObject("Scripting.Dictionary")  這是什麼意思呢 > 字典檔物件 

可 GOOGLE 查其使用法∼∼

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題