返回列表 上一主題 發帖

[發問] (已解決)計算最近一次漲跌價幅度

  1. Sub nn()
  2.   Dim lRow As Long
  3.   
  4.   lRow = Rows.Count
  5.   Do Until lRow = 1
  6.     lRow = Cells(lRow, 13).End(xlUp).Row
  7.     If Cells(lRow, 12) <> 0 And Cells(lRow, 12) <> "" Then
  8.       Cells(lRow, 14) = (Cells(lRow, 13) - Cells(lRow, 12)) / Cells(lRow, 12)
  9.     Else
  10.       Cells(lRow, 14) = (Cells(lRow, 13) - Cells(lRow, Cells(lRow, 13).End(xlToLeft).Column)) / Cells(lRow, Cells(lRow, 12).End(xlToLeft).Column)
  11.     End If
  12.     lRow = lRow - 1
  13.   Loop
  14. End Sub
複製代碼

TOP

本帖最後由 luhpro 於 2011-6-28 22:09 編輯

回復 3# freeffly
那就變成從最末一列到第二列都要執行.
然後先判斷 12 月那欄是否有資料,
若有則執行原先程式中的那個片段,
若無則往左尋找最末兩筆資料,
若此兩筆資料其中一筆在 A 欄則不做任何計算, (因 A 攔不是我們要計算的資料)
否則就將此兩欄資料做相應的計算, 程式如下:
  1. Sub nn()
  2.   Dim iCol1%, iCol2%
  3.   Dim lRows As Long, lRow As Long
  4.   
  5.   lRows = Cells(Rows.Count, 1).End(xlUp).Row
  6.   For lRow = lRows To 2 Step -1
  7.     If Cells(lRow, 13) <> 0 And Cells(lRow, 13) <> "" Then
  8.       If Cells(lRow, 12) <> 0 And Cells(lRow, 12) <> "" Then
  9.         Cells(lRow, 14) = (Cells(lRow, 13) - Cells(lRow, 12)) / Cells(lRow, 12)
  10.       Else
  11.         Cells(lRow, 14) = (Cells(lRow, 13) - Cells(lRow, Cells(lRow, 13).End(xlToLeft).Column)) / Cells(lRow, Cells(lRow, 12).End(xlToLeft).Column)
  12.       End If
  13.     Else
  14.       iCol1 = Cells(lRow, 13).End(xlToLeft).Column
  15.       iCol2 = Cells(lRow, iCol1).End(xlToLeft).Column
  16.       If iCol1 <> 1 And iCol2 <> 1 Then
  17.         Cells(lRow, 14) = (Cells(lRow, iCol1) - Cells(lRow, iCol2)) / Cells(lRow, iCol2)
  18.       End If
  19.     End If
  20.   Next lRow
  21. End Sub
複製代碼

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題