返回列表 上一主題 發帖

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

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

請教各位高手~
想利用vba來整理資料

目前工作表一為 1.png

想要同樣名字的資料只要出現一行就好
整理在工作表二
這是想要最終的結果

目前筆數較少可以慢慢貼
但資料一多就會很耗時
這樣程式碼該怎麼打呢?
資料如附件 多行資料合併.zip (131.28 KB)

我的想法;利用名字和科目為key值,再帶出成績
不知這樣方法是否可行

回復 4# 准提部林

請問准大 VBA內建說明檔要如何開啟呢? 記得好像有快捷鍵...但現在忘記了= ="
還有[瀏覽物件] 似乎也只能知道物件裡的成員吧? 大部分的語法好像都沒有寫出解釋 是嗎?
真心感謝每一位願意分享所學、指導新手的人!

TOP

回復 9# popomilk


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

可 GOOGLE 查其使用法∼∼

TOP

回復 2# 准提部林

Dim R&, C, N&, Brr, Arr, xD, i&, T$
Sheets("工作表2").UsedRange.Offset(1, 0).Clear
Arr = Range([工作表1!A2], [工作表1!A65536].End(xlUp)(1, 5))
ReDim Brr(1 To UBound(Arr), 1 To 8)
Set xD = CreateObject("Scripting.Dictionary")


版主大大好
我看不懂紅色的地方,可以請你教學嗎
arr=A1:E8的範圍
為什麼又要重新定義brr變數呢 Redim
Ubound是啥意思?
上網查過實在看不太懂
brr( xxx,xxx)又是啥意思?
CreateObject("Scripting.Dictionary")  這是什麼意思呢

感謝大大

TOP

回復 7# hcm19522


   函數也是一種方法 謝謝你^^

TOP

http://blog.xuite.net/hcm19522/twblog/450703586

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

回復 4# 准提部林

了解了~
可否解說下面的寫法
    For i = 1 To UBound(Arr)
    T = Arr(i, 1): R = xD(T)
    If R = 0 Then
       N = N + 1: R = N: xD(T) = N
       Brr(R, 1) = Arr(i, 1):  Brr(R, 2) = Arr(i, 2): Brr(R, 3) = Arr(i, 3)
    End If
    C = Application.Match(Arr(i, 4), Array("國語", "英文", "數學", "物理", "化學"), 0)
    Brr(R, C + 3) = Arr(i, 5)

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

是可以這樣改嘛? 感謝您的教學

TOP

回復 3# Changbanana

Long = &
Integer = %
String = $

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

TOP

回復 2# 准提部林


    wow~ 謝謝准大~
    Dim R&, C, N&, Arr, Brr, xD, i&, T$
   &,$
   這些定義代表的是什麼阿
   因為之前我都設這樣
   Dim A As Integer
   Dim B As Variant
   Dim C As String
  
想要更深入的了解

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題