Re: [VBA ] 欄位COPY

看板Visual_Basic作者 (0rz)時間12年前 (2013/10/16 19:38), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《LiLiHsien ()》之銘言: : 'for(int i = 0 ;i < array_A的陣列大小 ; i++) : For i = 1 To 25 : 'if(i!=0) : If i <> 0 Then : 'if(array_A[i] == NULL) : If Cells(i, 1).Value = "" Then : 'array_B[i] = Array_A[i-1] : Cells(i, 2) = Cells(i - 1, 1) : Else : 'array_B[i] = Array_A[1] : Cells(i, 2) = Cells(i, 1) : End If : Else : 'array_B[i] = Array_A[1] : Cells(i, 2) = Cells(i, 1) : End If : Next : 以上是我更改大大提供的程式碼 : 不過他在A列空值的狀況只能印出兩個 : 且不能達到我有兩個同一類需求的時候 : A B : 1 dog dog : 2 cat cat1 : 3 cat1 : 4 cat cat2 : 5 cat2 : 6 bird bird : 7 bird : 8 bird : 9 bird : A的原有的 , 我想產生B列 : 若如果A的類別只有一種(dog) , 則B只會依序印出dog : 但如果A的類別重複(cat有兩個) , 則B會列出cat1,cat1 : 等碰到A列的另一個cat , B在繼續印出cat2,cat2..... : 不知這該如何表示 : 麻煩大大提供一些意見 謝謝 : ) A列空值只能印出兩個 應該是因為筆誤 改成 Cells(i, 2) = Cells(i - 1, 2) 抓B列上面一個值就可以 至於你的問題要判斷A列是否有重複就比較複雜 我自己習慣 [也許有更快的做法] 會先弄出一個陣列 把有重複的項目存起來 然後填B列的時候 跟存在記憶體中的陣列比對 決定後面要不要加數字 另外還要開一個變數 用來決定後面要加的值是1 or 2 or 3 要達到你所有要求 整個寫下來程式碼並不短 以上拙見 ======附錄======== '**********讀取A列重複項目為y()陣列************ m = 0 For i = 1 To 35 If Cells(i, 1).Value <> "" Then If m > 0 Then If y(m - 1) <> Cells(i, 1).Value Then y(m - 1) = Cells(i, 1).Value Else y(m) = Cells(i, 1).Value m = m + 1 End If Else y(m) = Cells(i, 1).Value m = m + 1 End If End If Next i '***********暫存變數歸零********** j = 0 r = 0 x = "" '***********判斷B列該填寫的內容********* For i = 1 To 35 If i = 1 Then '***B1格要拉出來另外寫 因為如果A1空的 並不存在B0這個值*** If Cells(1, 1) <> "" Then For n = 0 To m - 2 If Cells(1, 1).Value = y(n) Then Cells(1, 2).Value = Cells(1, 1).Value + Str(1) j = 1 x = Cells(1, 1).Value + Str(j) ElseIf r = 0 Then Cells(1, 2).Value = Cells(1, 1).Value x = Cells(1, 1).Value End If r = 1 Next n End If Else '***處理B2之後*** r = 0 If Cells(i, 1).Value = "" Then '***A(i)格空白*** Cells(i, 2).Value = Cells(i-1, 2).Value Else '***A(i)格有值*** For n = 0 To m - 2 '***比對A(i)與記憶體的y陣列*** If Cells(i, 1).Value = y(n) Then r = 1 Next n If r = 1 Then '***A(i)存在於陣列中*** If Cells(i, 1).Value + Str(j) <> x Then j = 0 j = j + 1 Cells(i, 2).Value = Cells(i, 1).Value + Str(j) x = Cells(i, 1).Value + Str(j) Else '***A(i)不存在陣列中*** Cells(i, 2).Value = Cells(i, 1).Value x = Cells(i, 1).Value j = 0 End If End If End If Next i -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 152.7.224.5 ※ 編輯: hsnu920 來自: 152.7.224.5 (10/17 03:49)

10/17 22:35, , 1F
謝謝大大 後來想到解決方法了 感謝你們的熱心幫忙
10/17 22:35, 1F

10/19 02:04, , 2F
推推推!!我都忙到忘記來這看了XDD
10/19 02:04, 2F
文章代碼(AID): #1INkibtr (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #1INkibtr (Visual_Basic)