Board logo

標題: [發問] 迴圈卡住求救 [打印本頁]

作者: freeffly    時間: 2012-12-28 16:59     標題: 迴圈卡住求救

我想要搜尋最近一個月的單價填在Z欄上
不過不知道怎樣再搜尋到的時候讓它直接往下一列尋找
下面是我目前的代碼
  1. Sub 單價確認()
  2.     'Application.ScreenUpdating = False
  3.     c = Sheets("單價確認").[iv2].End(xlToLeft).Offset(, 1).Column
  4.     For n = 3 To Sheets("單價確認").Range("A65536").End(xlUp).Row
  5.     For nc = Sheets("單價確認").[iv2].End(xlToLeft).Column To 3 Step -1
  6.     Do While Cells(n, nc) > 0     Cells(n, c) = Cells(n, nc)
  7.     Loop
  8.     Next
  9.       Next
  10. End Sub
複製代碼
[attach]13721[/attach]
作者: GBKEE    時間: 2012-12-28 18:12

回復 1# freeffly
  1. '** A欄中沒資料   =>1   這For的迴圈不會執行的
  2. For n = 3 To Sheets("單價確認").Range("A65536").End(xlUp).Row
複製代碼
這行程式碼在這工作表中不適用 : 這工作表C:Y欄並非每一列都有資料,在C:Y欄中用End(xlUp).Row 取得最後資料列,的列數會不正確
  1. Sub 單價確認()
  2.     Dim n As Integer, R As Range, C As Integer
  3.     With Sheets("單價確認")
  4.         n = .Range("iv2").End(xlToLeft).Column + 1
  5.         For Each R In .UsedRange.Offset(2).Rows
  6.             For C = R.Cells.Count To 1 Step -1  '由最後的Cells 開始
  7.                 If R.Cells(C) <> 0 Then
  8.                     .Cells(R.Row, n) = R.Cells(C)
  9.                     Exit For
  10.                 End If
  11.             Next
  12.         Next
  13.     End With
  14. End Sub
複製代碼

作者: freeffly    時間: 2012-12-29 08:42

回復 2# GBKEE


    感謝版主
    的確A欄資料清空在這個表示沒辦法執行
    只想要把公司資料清掉沒去注意到
    版主的方式挺快的
    學習了
    第一次看到exit for 後來是想到go to的方式
    不過還沒試
    版主的代碼相當清爽
    再次感謝
作者: freeffly    時間: 2013-1-25 16:23

回復 2# GBKEE
  版主
我再將你的程式碼套用到其他的例子
我發現我對你的程式碼可能有一些不了解
1.可以先問依下我目前寫的 篩選問題這各程式碼 跟你上面的方式的差異在什麼地方?
2.你上面的方式也可以改成我現在這各例子嗎?

我想要去看哪一天是一個人加班 當個人加班時數<>加總的加班時數則那一欄刪除
  1. Sub 篩選問題()
  2.     For R = 7 To [A65536].End(xlUp).Row Step 3
  3.     For i = [iv5].End(xlToLeft).Column To 3 Step -1
  4.     If Cells(R, i) + Cells(R + 1) <> Cells(Range("A65536").End(xlUp).Row - 1, i) Then
  5.     Cells(5, i).EntireColumn.Delete
  6.     Exit For
  7.     Exit For
  8.     End If
  9.     Next
  10.     Next
  11. End Sub


  12. Sub 確認()
  13.     Dim C As Range, R As Integer
  14.     With ActiveSheet
  15.         'n = .Range("iv2").End(xlToLeft).Column + 1
  16.         For Each C In .UsedRange.Offset(5).Columns
  17.             For R = C.Cells.Count To 1 Step 3   '由最後的Cells 開始
  18.                 If C.Cells(R) <> Cells(19, C) Then
  19.                     Cells(5, C).EntireColumn.Delete
  20.                     Exit For
  21.                 End If
  22.             Next
  23.         Next
  24.     End With
  25. End Sub
複製代碼
[attach]14067[/attach]
作者: freeffly    時間: 2013-1-25 16:59

剛想了依下我的這各新問題
應該是要搜尋當天該組員工只有一個人加班
原本的思考方向好像用單純迴圈沒辦法寫

不知道字典能不能做到

替代方案好像要做輔助列判斷+迴圈




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