標題:
[發問]
如何運用EXCEL將不同列內容轉至欄位
[打印本頁]
作者:
abi
時間:
2014-3-3 22:46
標題:
如何運用EXCEL將不同列內容轉至欄位
請教各位大大
我有一份六千多筆的資料,因為每位學生測量體重的次數不同(最少1筆,最多10筆)
我要如何將同一個學生每一次的體重內容放至欄呢?(圖解說明如下) 謝謝各位的幫助。
[attach]17651[/attach]
作者:
ricky8751
時間:
2014-3-4 11:38
回復
1#
abi
[attach]17657[/attach]
[attach]17658[/attach]
我的方法供參考
作者:
p212
時間:
2014-3-4 12:58
本帖最後由 p212 於 2014-3-4 13:07 編輯
回復
1#
abi
欄位配置請如下圖所示(原始資料範圍A:C;重整資料範圍E:L;體重欄位以至體重(7)為例,若有增加需求可自行向右擴展欄位名稱。)
作法:
步驟1_定義名稱:(1)名稱(N)欄輸入姓名;(2)參照到(R)欄輸入
=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A:$A)-1)
步驟2:儲存格E2輸入陣列公式
=IFERROR(INDEX(姓名,MATCH(0,COUNTIF($E$1:E1,姓名),0)),"")
,以Ctrl+Shift+Enter輸入,再向下複製公式,上列公式目的在提取位於A欄姓名的唯一值。
步驟3:儲存格F2輸入
=IF(COUNTIF(姓名,$E2)<COLUMN(A$1),"",OFFSET($A$1,MATCH($E2,姓名,0)+COLUMN(A$1)-1,2))
,向右向下複製公式。
請參考!
作者:
yen956
時間:
2014-3-4 13:14
『有一份六千多筆的資料』, 應是全校資料,
樓上的方法,
如不同班同姓名, 會被誤刪!!
除非一班一班人工處理
作者:
yen956
時間:
2014-3-4 13:24
to ricky8751 & p212 大大:
抱歉, 大大的方法應可行,
只要加輔助欄, 輔助欄 填入 年級 & 班級 & 姓名,
排序後, 再將 輔助欄 視為姓名, 如上操作, 應沒問題,
思慮不周, 謹向兩位大大致歉!!
作者:
abi
時間:
2014-3-4 20:46
to ricky8751 & p212 & yen956
謝謝你們的幫助,我趕緊來試試看。
作者:
yen956
時間:
2014-3-6 14:44
回復
6#
abi
這麼久了, 問題應該早就解決了,
我只是純練功, 順便賺點數, 請不要介意, 並請指教.
Option Base 1
Option Explicit
Private Sub CommandButton1_Click()
Dim i, startL, 紀錄數 As Integer
紀錄數 = [A1].End(xlDown).Row - 1
'(1) 按 1年級、2班級、3姓名 遞增排序
'[A1].Resize(紀錄數 + 1, 14).Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order1:=xlAscending, _
Key3:=Range("D1"), Order1:=xlAscending, _
Header:=xlYes
'(2) 主程式
i = 1
Do
i = i + 1
If Cells(i, 4) = Cells(i + 1, 4) Then
startL = i
Do
i = i + 1
Loop Until Cells(i, 4) <> Cells(i + 1, 4) Or Cells(i, 1) = ""
'利用 複製→選擇性貼上→轉置 的方法, 可將 橫列 與 直欄 互轉
Cells(startL, 6).Resize(i - startL + 1, 1).Copy
'不能貼在原處, 要貼到 往右一格
Cells(startL, 7).PasteSpecial Transpose:=True
End If
Loop Until i > 紀錄數 Or Cells(i, 1) = ""
'(3) 因 (2) 不能貼在原處, 要貼到 往右一格, 故刪 除刪除原體重
[F2].Resize(紀錄數 + 1, 1).Delete Shift:=xlToLeft
'(4) 刪除 體重的空白列
For i = 紀錄數 + 1 To 2 Step -1
If Cells(i, 6) = "" Then Rows(i).Delete
Next
'(5) 按 1年級、2班級、3座號 遞增排序
'[A1].Resize(紀錄數 + 1, 14).Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order1:=xlAscending, _
Key3:=Range("C1"), Order1:=xlAscending, _
Header:=xlYes
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)