我需要根據列的值在不同的行集上運行獨立循環,例如,循環列值爲「星期一」,從第1行到第n個循環,然後是「星期二」從第n + 1到第18個循環,這些循環需要依次連續運行。例如:如何在excel中連續行上運行單獨的循環vba
回答
您可以使用字典來檢查是否有某一天重複多次。總共有3個嵌套循環:第一個遍歷工作表中的所有行,第二個循環遍歷給定日期的所有行,最後一個循環遍歷列條目。
看起來您對每個單元格中的初始字符串不感興趣(例如「Res01」,「Res02」等),但只是想知道給定日期是否有相同的時間並突出顯示重複的細胞。
此外,由於您只希望在給定的一天內重複,當該日處理開始時,該字典將被清除。字典的關鍵是時間字符串,值是單元格的地址。對於每個單元格,宏將檢查該時間是否已經在字典中。如果它是重複的,並且原始單元格和當前單元格背景顏色都會更改。如果不是,則鍵/值對被存儲並且處理繼續。
我決定改變顯示連續天數重複的背景顏色(綠色/藍色),以便更容易看出差異。
Option Explicit
Sub HighliteDiffs()
Dim sht As Worksheet
Set sht = Worksheets("Staff Schedule")
Dim r As Integer, c As Integer, clr As Integer: clr = 4
Dim curDay As String, val As String, addr As String
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim rng As Range
With sht
Dim lastRow As Integer, lastCol As Integer
lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
r = 2
Do While r <= lastRow
If clr = 4 Then
clr = 5
Else
clr = 4
End If
dict.RemoveAll
curDay = Left(Cells(r, "A").Value, 11)
Do While curDay = Left(Cells(r, "A").Value, 11)
lastCol = .Cells(r, .Columns.Count).End(xlToLeft).Column
For c = 3 To lastCol
val = Right(.Cells(r, c).Value, 5)
If dict.Exists(val) Then
addr = dict(val)
Set rng = .Cells(Range(addr).Row, Range(addr).Column)
rng.Interior.ColorIndex = clr
.Cells(r, c).Interior.ColorIndex = clr
Else
dict(val) = .Cells(r, c).Address
End If
Next
r = r + 1
Loop
Loop
End With
End Sub
這是一些很好看的代碼!唯一的問題是,我的Excel不像我之前發佈的那樣完全一樣。帶日期的第一個單元總是E4不是A1,時間G4不是C1。在代碼中,我將列從A更改爲E,並且從7開始列循環,而不是3。它仍然遺漏了過程中的一些重複項? – Sam
適用於我使用的數據集(根據您發佈的內容)。只有時間被存儲爲一個關鍵字 - 所以如果說「08:45」在字典中,那麼這段時間內的任何其他條目都應該被重複着色。你可能有尾隨空格或使時間字符串彼此不同的東西。您必須進行調試才能看到重複項目錯過的原因。您可以'進入'代碼並按F8逐行執行以查看正在進行的操作。 – Amorpheuses
現在正在工作。接下來,我需要根據列C中的文本跳過一些行,希望能夠插入代碼。謝謝 – Sam
- 1. VBA在Excel中,循環繼續運行
- 2. 在Arduino上運行程序時連續運行循環?
- 3. 循環功能保持運行VBA Excel
- 4. 如何在javascript中運行連續循環
- 5. Excel VBA在沒有切換表的foreach循環上運行宏
- 6. 如何用循環複製非連續的行[vba]?
- 7. 如何使用Excel VBA宏循環行?
- 8. Excel循環VBA增量行
- 9. Excel VBA:在循環中選擇一行
- 10. excel vba中的行上循環並獲取單元格
- 11. 連續循環執行runnable
- 12. Excel VBA中的for循環僅在調試模式下運行
- 13. 如何讓VBA循環運行更快?
- 14. while循環繼續運行
- 15. Excel VBA宏 - 在循環中連接
- 16. 如何在不連續的行上運行命令行命令,指定單獨的行號?
- 17. 如何讓angularjs循環連續運行而不出錯
- 18. 對於內部不運行的循環如果語句Excel VBA
- 19. 在單行中反向運行循環
- 20. 如何在excel中循環遍歷行VBA宏
- 21. 如何在Excel VBA中執行循環拷貝?
- 22. vba循環在非連續範圍內
- 23. 在一個無限循環中連續運行多個函數
- 24. 如何在Heroku上運行Tweetstream循環?
- 25. PyGtk:在單獨的線程中運行gtk.main()循環
- 26. 在龍捲風中運行單獨的epoll循環
- 27. 如何在excel vba中沿整列運行公式excel vba
- 28. VBA excel - 在循環中循環
- 29. Python-Selenium無法在連續循環中執行右鍵單擊
- 30. 如何連續運行getJSON
請提供其他信息,例如您執行了哪些代碼?它是否因錯誤或未達到預期而失敗? –
select case may help,'select case left(range(「」),3)'你試過了什麼? –
爲什麼你需要爲此使用連續循環?另外,如果您的日期保持不被認可的excel格式,您還沒有做任何好處 – Tom