[算表] VBA合併與轉換多欄

看板Office作者 (Amo)時間5年前 (2019/10/26 04:16), 5年前編輯推噓0(0097)
留言97則, 2人參與, 5年前最新討論串1/1
軟體:excel 版本:2013 大家好如上述小弟目前資料型態如下: 學號 測驗次數 國 英 數 國2 英2 數2 延續下去 因為上一個人匯入資料沒有做條件匯入資料庫 現在資料為: 學號 測驗次數 國 英 數 國2 英2 數2 國3 英3 數3 123 2 80 70 70 70 80 90 123 1 70 60 80 照常理來說這個資料應該合併然後加到第三次而並非獨立出來這個資料最多只做4次測驗 需每次做分析不能合併算平均或總成績 小弟的問題是 1.如何將學號合併為多欄並且將下面第一次的資料貼到第三次且次數加至正確數量如下: 學號 測驗次數 國 英 數 國2 英2 數2 國3 英3 數3 123 3 80 70 70 70 80 90 70 60 80 2.假如有各種測驗次數的學生如只做1次的一樣有兩筆如何判斷讓它加到第二次如下: 學號 測驗次數 國 英 數 國2 英2 數2 國3 英3 數3 123 2 80 70 70 70 80 90 123 1 70 60 80 456 1 70 60 80 456 1 60 70 85 結果: 學號 測驗次數 國 英 數 國2 英2 數2 國3 英3 數3 123 3 80 70 70 70 80 90 70 60 80 456 2 70 60 80 60 70 85 3.還有一種情況插入是三次 123 1 70 60 88 123 1 70 60 80 123 1 70 60 83 要考慮以下狀況該怎麼寫呢拜託了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.12.162.106 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1572034570.A.BF9.html

10/26 10:05, 5年前 , 1F
1.要有學號唯一值,如果有就不用以下方式
10/26 10:05, 1F

10/26 10:05, 5年前 , 2F
方式有a)資料工具的移除重覆range.removeduplicates
10/26 10:05, 2F

10/26 10:05, 5年前 , 3F
b)進階篩選,range.advancedfilter
10/26 10:05, 3F

10/26 10:05, 5年前 , 4F
c)dictionary
10/26 10:05, 4F

10/26 10:05, 5年前 , 5F
d)迴圈,判斷,工作表函數countif(是否為0),
10/26 10:05, 5F

10/26 10:05, 5年前 , 6F
match(是否為錯誤值)
10/26 10:05, 6F

10/26 10:05, 5年前 , 7F
2.有唯一值後填入第一筆資料和找是否有重覆,迴圈於範圍內
10/26 10:05, 7F

10/26 10:05, 5年前 , 8F
,或迴圈於range.find,找到以range.copy或range= range.
10/26 10:05, 8F

10/26 10:05, 5年前 , 9F
value複製貼上或填入;要確認每筆學號最右側有值儲存格欄
10/26 10:05, 9F

10/26 10:05, 5年前 , 10F
號的話,range.end、range.find或工作表函數counta(有連續
10/26 10:05, 10F

10/26 10:05, 5年前 , 11F
資料時),欄號的話range.column
10/26 10:05, 11F

10/26 16:15, 5年前 , 12F
目前唯一值有了可是不知道怎麼去比對2者相同學號後面
10/26 16:15, 12F

10/26 16:15, 5年前 , 13F
的所有值 貼上部分如何依序貼呢?
10/26 16:15, 13F

10/26 16:36, 5年前 , 14F
巢狀迴圈判斷或是迴圈range.find,就看是否有排序,有的話
10/26 16:36, 14F

10/26 16:36, 5年前 , 15F
range.find或是工作表函數match取第一筆出現的列號,迴圈
10/26 16:36, 15F

10/26 16:36, 5年前 , 16F
工作表函數countif取得的筆數,位序貼上就要看每筆學號最
10/26 16:36, 16F

10/26 16:36, 5年前 , 17F
右側有資料的儲存格或欄號,方式上述回文range.end之後都
10/26 16:36, 17F

10/26 16:36, 5年前 , 18F
是再說明這方面,有這個資料range.offset或是欄號+1
10/26 16:36, 18F

10/26 18:09, 5年前 , 19F
痾小弟不才搞了5小時連後面範圍都選不出來...
10/26 18:09, 19F

10/26 19:02, 5年前 , 20F
S大能提供函數或VBA程式嗎xD
10/26 19:02, 20F

10/26 19:55, 5年前 , 21F
提供回文所述選不出來的檔案或寫法,再來看看問題是什麼?
10/26 19:55, 21F

10/26 20:56, 5年前 , 22F
我先重新來不然都亂了s大幫我大概分析一下概念有沒有
10/26 20:56, 22F

10/26 20:56, 5年前 , 23F
10/26 20:56, 23F

10/26 20:56, 5年前 , 24F
1.篩選唯一學號2.將表二唯一學號跟表ㄧ原始資料比對
10/26 20:56, 24F

10/26 20:57, 5年前 , 25F
如果相等將表ㄧ對應學號右邊值抓出
10/26 20:57, 25F

10/26 20:58, 5年前 , 26F
2、依照學號依序貼上後面數值
10/26 20:58, 26F

10/26 21:16, 5年前 , 27F
如原po回文所述
10/26 21:16, 27F

10/26 21:46, 5年前 , 28F
目前程式階段跟錯誤
10/26 21:46, 28F

10/26 21:47, 5年前 , 29F

10/26 21:53, 5年前 , 30F
以巨集來看有可能出現這個錯誤的原因是sheet2要改為類似上
10/26 21:53, 30F

10/26 21:54, 5年前 , 31F
方工作表1的寫法,如工作表2.range("a:a")之類的
10/26 21:54, 31F

10/26 21:55, 5年前 , 32F
如要match尋找完全符合的話,第三個引數不是1,而是0
10/26 21:55, 32F

10/26 21:59, 5年前 , 33F
另外也不太了解變數E是什麼?1.不確定這個變數的型態是什
10/26 21:59, 33F

10/26 21:59, 5年前 , 34F
麼?range嗎?
10/26 21:59, 34F

10/26 22:00, 5年前 , 35F
2.如果是的話,要set該變數
10/26 22:00, 35F

10/26 22:00, 5年前 , 36F
有改了好像還是一樣還是要加宣告
10/26 22:00, 36F

10/26 22:02, 5年前 , 37F
那這個概念寫成這樣有錯嗎?
10/26 22:02, 37F

10/26 22:02, 5年前 , 38F

10/26 22:05, 5年前 , 39F
目前改完可以執行但是沒有值
10/26 22:05, 39F

10/26 22:06, 5年前 , 40F

10/26 22:12, 5年前 , 41F
可以執行,沒錯誤產生,但沒有值帶入方面還是要從檔案來看
10/26 22:12, 41F

10/26 22:20, 5年前 , 42F
因為測試連結的巨集,工作表1有連續資料(二欄以上)是可以
10/26 22:20, 42F

10/26 22:20, 5年前 , 43F
將工件表2的b欄資料帶入的
10/26 22:20, 43F

10/26 22:20, 5年前 , 44F
儲存格d1有帶入資料
10/26 22:20, 44F

10/26 22:21, 5年前 , 45F
目前變這樣...
10/26 22:21, 45F

10/26 22:25, 5年前 , 46F
我的檔案是這樣
10/26 22:25, 46F

10/26 22:25, 5年前 , 47F

10/26 22:26, 5年前 , 48F

10/26 22:29, 5年前 , 49F
連結不知道哪個是工作表1、工作表2
10/26 22:29, 49F

10/26 22:35, 5年前 , 50F
疑那要如何修改
10/26 22:35, 50F

10/26 22:35, 5年前 , 51F
S大那個怎麼用出來的
10/26 22:35, 51F

10/26 22:37, 5年前 , 52F
修改什麼?因為不確定22:25和22:26所上傳的圖檔是工作表1
10/26 22:37, 52F

10/26 22:37, 5年前 , 53F
或2,沒看到下方工作表名稱
10/26 22:37, 53F

10/26 22:39, 5年前 , 54F
那個怎麼用出來的?不了解,哪個?我的連結圖檔?
10/26 22:39, 54F

10/26 22:39, 5年前 , 55F
如果是的話,是以螢幕截圖
10/26 22:39, 55F

10/26 22:41, 5年前 , 56F
從原po回文的圖檔來看應是無機密性吧,若沒有的話看要不要
10/26 22:41, 56F

10/26 22:42, 5年前 , 57F
就上傳雲端空間,提供連結(縮網頁),這樣不限我版上先進要
10/26 22:42, 57F

10/26 22:42, 5年前 , 58F
協助原po也會較方便
10/26 22:42, 58F

10/26 22:59, 5年前 , 59F

10/26 22:59, 5年前 , 60F
1AdtQn-pp_w_Qn/view
10/26 22:59, 60F

10/26 22:59, 5年前 , 61F
感謝大大
10/26 22:59, 61F

10/26 23:04, 5年前 , 62F
10/26 23:04, 62F

10/26 23:05, 5年前 , 63F
忘記縮網再麻煩了
10/26 23:05, 63F

10/26 23:22, 5年前 , 64F
這個是結果檔我vba還沒寫
10/26 23:22, 64F

10/26 23:24, 5年前 , 65F
10/26 23:24, 65F

10/26 23:24, 5年前 , 66F
這個是我寫到剛剛那個問題的
10/26 23:24, 66F

10/27 06:53, 5年前 , 67F
是工作表1的資料填到工作表2的話,判斷後面的寫法就相反了
10/27 06:53, 67F

10/27 06:54, 5年前 , 68F
應是工作表2.range=工作表1.range,取得最右側有值的儲存
10/27 06:54, 68F

10/27 06:55, 5年前 , 69F
格也會是寫於工作表2.range的部分
10/27 06:55, 69F

10/27 06:56, 5年前 , 70F
如只有a欄一欄,不以xltoright,而是xltoleft的方式
10/27 06:56, 70F

10/27 15:12, 5年前 , 71F
我改成left可是它沒辦法全部依照學號往下 是讀到學號
10/27 15:12, 71F

10/27 15:12, 5年前 , 72F
的最後第一個值耶
10/27 15:12, 72F

10/27 15:12, 5年前 , 73F

10/27 15:13, 5年前 , 74F

10/27 15:46, 5年前 , 75F
這方面還是要看巨集如何寫才比較清楚
10/27 15:46, 75F

10/27 15:50, 5年前 , 76F

10/27 15:50, 5年前 , 77F
有抓到第一個值但是它只顯示最後一個出來
10/27 15:50, 77F

10/27 15:57, 5年前 , 78F
目前程式一直跑的確會依序抓到最後但是列不出來
10/27 15:57, 78F

10/28 10:48, 5年前 , 79F
這樣的截圖,沒看到工作表1或2是那個資料,要的話請附上工
10/28 10:48, 79F

10/28 10:50, 5年前 , 80F
作表1、工作表2名稱和巨集的截圖,不然就以檔案來看才比較
10/28 10:50, 80F

10/28 10:50, 5年前 , 81F
清楚
10/28 10:50, 81F

10/28 10:52, 5年前 , 82F
就像我10/27 06:54所回文取得最右側有值的儲存格也會是寫
10/28 10:52, 82F

10/28 10:53, 5年前 , 83F
在工作表2.range的部分,但巨集上還是寫在工作表1(變數r)
10/28 10:53, 83F

10/28 10:53, 5年前 , 84F
的部分
10/28 10:53, 84F

10/28 11:09, 5年前 , 85F
10/28 11:09, 85F

10/28 11:10, 5年前 , 86F
我就不分工作表了,要有k欄(唯一值)的資料,提供的是range
10/28 11:10, 86F

10/28 11:10, 5年前 , 87F
.copy方式,如不用帶格式的話,以回文range=range.value方
10/28 11:10, 87F

10/28 11:12, 5年前 , 88F
式。連結內L欄後就是從c欄起的資料了
10/28 11:12, 88F

10/28 13:14, 5年前 , 89F
10/28 13:14, 89F

10/28 19:12, 5年前 , 90F
感謝s大 我27號已經有試出來了 不過我是用do untilloop
10/28 19:12, 90F

10/28 19:13, 5年前 , 91F
不知道哪個效率比較高呢?
10/28 19:13, 91F

10/28 19:14, 5年前 , 92F
我之後會再試試看真的很感謝s大~
10/28 19:14, 92F

10/28 19:20, 5年前 , 93F

10/28 19:21, 5年前 , 94F
這是我27號寫出來的結果是在工作表2裡 跟s大的結果一
10/28 19:21, 94F

10/28 19:21, 5年前 , 95F
10/28 19:21, 95F

10/28 19:22, 5年前 , 96F
不過在我原始data 處理的速度會有點慢 原始有1萬多筆
10/28 19:22, 96F

10/28 19:22, 5年前 , 97F
會有一小段無法回應的時間
10/28 19:22, 97F
※ 編輯: jerry7504 (27.52.229.55 臺灣), 10/29/2019 23:20:42
文章代碼(AID): #1TirWAlv (Office)
文章代碼(AID): #1TirWAlv (Office)