頁: [1] 2
|
 |
|
作者
|
主題: 請教一下大家,這個功能如何能達到呢?! (閱讀 1036 次)
|
byeagan
小學生
離線
文章: 4
|
在我的附件中有一個excel檔,sheet1是尚未經過處理的檔案,sheet2是經過手動處理的檔案 ,我已經爬文過一遍了,但是還是沒有找到能夠轉化這兩個格式的VBA範例檔,功能為把sheet1的資料自動產生到sheet2,而且為sheet2要的格式,能否請各位先進給一點提示,讓小弟解決此問題。
sheet1:
姓名: 王大華 生日: 1997/12/12 星座: 雙子座 住址: 桃園縣平鎮市中正路1號
姓名: 李大為 生日: 1995/8/12 星座: 雙魚座 住址: 台北縣板橋市中山路5號
姓名: 陳小春 生日: 2005/2/11 星座: 獅子座 住址: 高雄縣岡山鎮明德路10號
sheet2:
姓名: 生日: 星座: 住址: 王大華 1997/12/12 雙子座 桃園縣平鎮市中正路1號 李大為 1995/8/12 雙魚座 台北縣板橋市中山路5號 陳小春 2005/2/11 獅子座 高雄縣岡山鎮明德路10號
|
|
|
|
已記錄
|
|
|
|
|
hsieh
|
Sub nn() Dim A As Range, Arr(65536, 4), s&, r&, i%, j% With Sheet1 r = 1 While r < .[A65536].End(xlUp).Row Set A = .Cells(r, 1): j = 0 For i = 2 To A.CurrentRegion.Rows.Count Step 2 Arr(s, j) = A.CurrentRegion(i, 1) j = j + 1 Next r = r + 9: s = s + 1 Wend End With Sheet2.[A2:D65536] = "" Sheet2.[A2].Resize(s, 4) = Arr End Sub
|
|
|
|
|
已記錄
|
回答滿意嗎? 記得告訴我哦!!
|
|
|
GBKEE
47年次
高中生
離線
文章: 192
|
Sub test() Dim X As Integer, C As Range X = Sheet2.Range("A65536").End(xlUp).Row + 1 For Each C In Sheet1.Range("A1:A" & Sheet1.Range("A65536").End(xlUp).Row) If C = Sheet1.Range("A1") Then Sheet2.Cells(X, "A") = C.Offset(1, 0) Sheet2.Cells(X, "B") = C.Offset(3, 0) Sheet2.Cells(X, "C") = C.Offset(5, 0) Sheet2.Cells(X, "D") = C.Offset(7, 0) X = X + 1 End If Next End Sub
|
|
|
|
|
已記錄
|
|
|
|
oobird
凸槌的木工
論壇維護群
離線
文章: 4229
|
提供一個較基礎的循環: Sub yy() Dim i% Sheet2.[a2:d65536] = "" With Sheet1 For i = 1 To (.[a65536].End(xlUp).Row + 1) \ 9 Sheet2.Cells(i + 1, 1).Resize(1, 4) = Array(.Cells(9 * (i - 1) + 2, 1), .Cells(9 * (i - 1) + 4, 1), .Cells(9 * (i - 1) + 6, 1), .Cells(9 * (i - 1) + 8, 1)) Next i End With End Sub
|
|
|
|
|
已記錄
|
結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
|
|
|
GBKEE
47年次
高中生
離線
文章: 192
|
oobird版主的程式在 資料龐大時剎那間就完成 但是版主程式在 I>3641 時發生溢位 原本版主 宣告 I AS Integer 資料型態範圍為 -32,768 到 32,767 是不應該 發生溢位才對 經修改 宣告 I As Long 後可行 同樣的資料本人所寫的程式慢了很多 程式裡 宣告 X AS Integer 沒有發生溢位為何 能否請教 oobird版主 解惑一下 謝謝
|
|
|
|
|
已記錄
|
|
|
|
oobird
凸槌的木工
論壇維護群
離線
文章: 4229
|
因為3641除9非整數。 此例是假設每一筆列數相同。也就是每9列為一筆。 再者上面代碼只是基礎循環的例子,速度並不快的。
|
|
|
|
|
已記錄
|
結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
|
|
|
GBKEE
47年次
高中生
離線
文章: 192
|
因為3641除9非整數。
感謝oobird版主解說 因為3641除9非整數 發生溢位問題 可是 For i = 1 To (.[a65536].End(xlUp).Row + 1) \ 9 I是除9後的I全部是整數 oobird版主解說我就無法理解
|
|
|
|
|
已記錄
|
|
|
|
oobird
凸槌的木工
論壇維護群
離線
文章: 4229
|
哦,那就應是a列超過32767列吧?因為取i值時是/9後的值,未/9之前的數字大於32767也會溢出的,必須定義成long類型。要不然就分開兩行寫。
|
|
|
|
|
已記錄
|
結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
|
|
|
byeagan
小學生
離線
文章: 4
|
非常謝謝各位先進的回答。但是大家好像誤會我的意思,我是想說在一片散亂的資料中,如果遇到 "姓名:"這個cell就自動抓取它下一個cell的資料,而"生日:"、"星座"、"地址:"也是雷同,而如果可以再加上每一筆資料的序號就太好了,只是我沒這個貪心,我最主要是不懂第一個功能要如何寫?
我再附件中再附上範例檔,希望各位先進可以幫忙解答一下。謝謝。
|
|
|
|
已記錄
|
|
|
|
oobird
凸槌的木工
論壇維護群
離線
文章: 4229
|
沒人誤會,是你沒說清楚,而且你給的資料太整齊,所以讓人白費心血。 附件中王大華有兩筆,你是否要去重複?
|
|
|
|
|
已記錄
|
結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
|
|
|
|
頁: [1] 2
|
|
|
|