Board logo

標題: 請問vba 的資料 [打印本頁]

作者: ccj    時間: 2013-4-11 16:41     標題: 請問vba 的資料

A    B       C          D       E  
1   19        8.0%                                                       
2   21        10.5%        21                        
3   25        19.0%                                                       
4   30        20.0%                                                       
5   34        13.3%        21     34
6   37        8.8%                                               
7   38        2.7%                                                       
8   41        10.8%        41                        
9   49        19.5%                                                       
10  53        8.2%        41      53

vba剛學,程度很差
以C欄的%大小,
1_當 % 增加時,把B欄的值,放到D欄  (但如繼續增加,就不放到D欄)
2_當 % 減少時,把B欄的值,放到E欄  (同樣,但如繼續減少,就不放到E欄)
3_把cells(2,d)中的第1個增加(21),複製到減少的那一列上cells(5,d)
  有寫了一些
Sub 比較()
For x = 2 To 1000
If Cells(x + 1, "C") < Cells(x, "C") Then
Cells(x + 1, "D") = Cells(x + 1, "B")
End If
If Cells(x + 1, "C") > Cells(x, "C") Then
Cells(x + 1, "E") = Cells(x + 1, "B")
End If
If Cells(x, "C") = "" Then Exit For
Next x
End Sub
但只能做成這樣
A    B       C          D       E  
1   19        8.0%                                                       
2   21        10.5%        21                        
3   25        19.0%        25                                               
4   30        20.0%        30                                               
5   34        13.3%                34
6   37        8.8%                                               
7   38        2.7%                                                       
8   41        10.8%        41                        
9   49        19.5%        49                                               
10  53        8.2%                53

請高手幫忙一下,謝謝!
作者: ccj    時間: 2013-4-11 16:49

回復 1# ccj

更正    但只能做成這樣
A    B          C             D       E  
1   19        8.0%                                                        
2   21        10.5%        21                        
3   25        19.0%        25                                                
4   30        20.0%        30                                                
5   34        13.3%                34
6   37        8.8%                  37                                       
7   38        2.7%                  38                                      
8   41        10.8%        41                        
9   49        19.5%        49                                                
10  53        8.2%                  53
就是不知第二個增加,如何不讓它再複製到D欄(如25,30,49)
同樣的減少的(37,38)
請高手幫忙,謝謝~
作者: GBKEE    時間: 2013-4-11 18:08

回復 2# ccj
是這樣嗎? 試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim A(1 To 2) As Integer, i As Integer
  4.     i = 3
  5.     Do While Cells(i, "A") <> ""
  6.         If Cells(i, "c") > Cells(i - 1, "c") And A(1) < 1 Then
  7.             Cells(i, "d") = Cells(i, "b")
  8.             A(1) = A(1) + 1
  9.             A(2) = 0
  10.         ElseIf Cells(i, "c") < Cells(i - 1, "c") And A(2) < 1 Then
  11.             Cells(i, "e") = Cells(i, "b")
  12.             A(2) = A(2) + 1
  13.             A(1) = 0
  14.         End If
  15.         i = i + 1
  16.     Loop
  17. End Sub
複製代碼

作者: ccj    時間: 2013-4-11 19:36

本帖最後由 ccj 於 2013-4-11 19:38 編輯

回復 1# ccj


    嗯G大,跑出來結果是 這樣沒錯!(我有把第4行 i=3改成i=2)
1        19        8.0%               
2        21        10.5%        21       
3        25        19.0%               
4        30        20.0%               
5        34        13.3%                34
6        37        8.8%               
7        38        2.7%               
8        41        10.8%        41       
9        49        19.5%               
10        53        8.2%                53

請問程式中
第6行  And A(1) < 1
和第8行  A(1) = A(1) + 1
第9行   A(2) = 0
是表示什麼意思呢?

還有我問題中的第3項
要把那21複製到34左邊一格,和41複製到53左邊一格
該怎麼做呢?
謝謝您了!
作者: ccj    時間: 2013-4-11 19:46

本帖最後由 ccj 於 2013-4-11 19:47 編輯

回復 4# ccj
   我有想到是在D欄,由上到下找到第1個有資料(如21)的位置,
放到E欄由上到下找到第1個有資料(如34)的位置
再來,在D欄,由上到下找到第2個有資料(如41)的位置,
放到E欄由上到下找到第2個有資料(如53)的位置的左邊一格
但在網路上搜了很久,還是不知要用什麼語法來寫
謝謝!
作者: ccj    時間: 2013-4-11 22:31

本帖最後由 ccj 於 2013-4-11 22:32 編輯

回復 1# ccj


    好像從range(d5)往上找到儲存格有資料的(21),再把21複製到range(d5),比較快
接著
從range(d10)往上找到儲存格有資料的(41),再把41複製到range(d10),
作者: ccj    時間: 2013-4-11 22:38

回復 6# ccj


    接著13行後,
   cells(i,"d").select
  然後在往上找儲存格有資料的,再複製下來到cells(i,"d")
只是不知怎麼寫程式




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)